[Kea-announce] Kea 1.8.0 is available (and has been for a little while now. Sorry!)

Michael McNally mcnally at isc.org
Wed Sep 2 17:55:20 UTC 2020


Hello Kea-Announce Subscribers --

Last week the Kea team was excited to complete the release of Kea 1.8.0.
Unfortunately we dropped the ball on informing you about that at the time.
We offer our apologies for the delayed announcement but we would like you
to know that 1.8.0 is finally finished and available for download.

Under the alternating "stable branch / development branch" numbering
scheme used by the Kea project, this marks the end of the Kea 1.7
development branch.  The work done to add new features to 1.7 has now
been deemed mature enough to be promoted to become the base for this
new stable production branch and so with the release of Kea 1.8.0 the
experimental features (such as multi-threading) that were added in 1.7
are now available in a branch which is designated stable and recommended
for production.

ISC is committed to continuing support for the previous production
branch, Kea 1.6, until Kea 2.0 is ready to debut, so bug fixes and
security patches will be provided in parallel for the 1.6 and 1.8
production branches for some time to come, while the next development
release of Kea will mark the beginning of the new 1.9 experimental branch.

Kea 1.8.0 is available from our website:
   https://www.isc.org/download/#Kea

Or directly from our downloads server:
   https://downloads.isc.org/isc/kea/1.8.0

====

# Kea 1.8.0, Aug 26th 2020, Release Notes

Welcome to Kea 1.8.0, the first release of the 1.8 series. 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.

If you are interested in the latest development releases with new
features, please look at the upcoming 1.9.x series.

The text below references issue numbers. For more details, visit the Kea
GitLab page at https://gitlab.isc.org/isc-projects/kea/issues.

The following major features and bugfixes were implemented since the 1.6
series:

1. **Multi-threading**. Kea is now able to take advantage of multiple
CPU cores and process many packets in parallel. In many cases, this
improves overall performance. We have observed a substantial increase in
LPS (Leases Per Second) with multi-threading vs the single-threaded mode
in configurations without High Availability. Many factors contribute to
overall performance, including `enable-multi-threading`,
`thread-pool-size`, `packet-queue-size`, what kind of backend is used,
whether the database is local or remote, and some of these can limit the
performance improvement with multi-threading.

ISC has published the results of our performance tests on our Jenkins
System
(https://jenkins.isc.org/job/kea-1.7/job/performance/KeaPerformanceReport
/). There are new sections in Kea ARM dedicated to enabling and tuning
multi-threaded performance.

2. **Stork support**. Stork, our new open source management application,
monitors many aspects of Kea and presents its status in an easy-to-use
graphical interface. Stork can also export statistics to Prometheus and
Grafana. Stork relies on the `status-get` API command, available in this
version of Kea. You can learn more about Stork here:
https://gitlab.isc.org/isc-projects/stork/

3. **HA improvements**. Many improvements have been made in Kea's High
Availability feature. A new mode of operation `passive-backup` has been
implemented. In this mode there is one primary server and an arbitrary
number of backup servers that get updates from the primary. It is
different than other HA modes in the sense that there is no dedicated
secondary server. The updates to backup servers are now asynchronous,
which greatly reduces the performance penalty for adding new backup
servers. Also, a set of new commands to manipulate HA status
(`ha-maintenance-start`, `ha-maintenance-notify` and
`ha-maintenance-cancel`) are now available. They are useful to perform a
controlled shutdown with faster recovery. Finally, the HTTP connection
recovery has been improved. The server pairs are now able to reestablish
connection more reliably.

4. **Fine grained DNS Updates**. Earlier Kea versions supported global
DNS update parameters. Kea 1.8 makes it possible to specify many DNS
update parameters at the global, shared network and subnet levels. In
particular, it is possible to specify whether to send the updates or not
(`ddns-send-updates`), control whether to sanity-check the client update
(`ddns-replace-client-name`, `hostname-char-set`,
`hostname-char-replacement`), replace (`ddns-generated-prefix`) or
expand the update (`ddns-qualifying-suffix`) on a per shared network or
subnet basis. This provides more flexibility over DNS updating.

5. **New API commands**. Many new API commands have been implemented.
There are new commands to retrieve leases using certain patterns
(`lease4-get-by-client-id`, `lease4-get-by-hostname`,
`lease4-get-by-hw-address`, `lease6-get-by-duid`,
`lease6-get-by-hostname`).  Other new commands instruct Kea to retrieve
new configuration from the Config Backend immediately rather than
waiting for a timer to expire (`config-backend-pull`), or to trigger DNS
updates (`lease4-resend-ddns`, `lease6-resend-ddns`).

6. **New open source hook**.
[flex_option](https://kea.readthedocs.io/en/latest/arm/hooks.html#flex-op
tion-flexible-option-for-option-value-settings). This new hook enables
you to add, supersede or remove an option based upon on the result of an
expression.  The option raw value can be determined by an expression.

7. **New subscriber-only hook**.
[Leasequery](https://kea.readthedocs.io/en/latest/arm/hooks.html#lease-qu
ery-leasequery). This library provides support for DHCPv4 Leasequery as
described in RFC 4388, and for DHCPv6 Lease Query (RFC 5007). This
feature is primarily used by hardware relays (Cisco in particular) to
update their state after a reboot, but can be used by any device or
software that is capable of using the Leasequery protocol.

8. **New open source hook**.
[BOOTP](https://kea.readthedocs.io/en/latest/arm/hooks.html#bootp-support
). This legacy feature was added using a hook module so that it can
easily be omitted from more modern deployments. Surprisingly enough,
there are still many legacy devices that require BOOTP.

9. **Bugfixes**. There are 41 tickets marked as bugs that were fixed
since the 1.6.0 release. Even more small improvements have been
implemented. For a complete list, please see the Changelog below. Two
most notable bug fixes provide a more robust database connection
recovery and improve handling of broken configurations.

10. **Documentation and test reports**. There were 19 documentation
updates that were deemed big enough to be listed in the Changelog. In
addition to that, we now publish weekly performance test reports (see
our
[Jenkins](https://jenkins.isc.org/job/kea-1.7/job/performance/KeaPerforma
nceReport/) test system). This is especially important in the context of
tuning multi-threaded Kea deployments.

11. **Kea Migration Assistant (keama) packages**. Keama is a tool that
reads ISC DHCP's configuration file and produces a Kea configuration
file based on it. ISC DHCP and Kea are very different, so a complete
conversion is impossible, but this provides a starting place for people
who are migrating. It is now much easier to try it, as Keama packages
are now available at https://cloudsmith.io/~isc/repos/keama/packages/.
You can learn more about Keama from our [KB
article](https://kb.isc.org/docs/migrating-from-isc-dhcp-to-kea-dhcp-usin
g-the-migration-assistant).

## 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 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, 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 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
1.6.0

1797.	[build]		razvan
	Bump up libs version for Kea 1.8.0 release.
	(Gitlab #1395)

1796.	[bug]		marcin
	Kea HTTP client re-establishes connection with the HTTP server
when
	timeout occurs. Prior to this change the client tried to reuse
	the connection after timeout often getting subsequent timeouts.
	Re-establishing the connection may help avoid further timeouts
	during the High Availability operation.
	(Gitlab #1390)

1795.	[bug]		razvan
	Added check for 'renew-timer' value to be lower than or equal to
	'rebind-timer' value at subnet and shared network level.
	(Gitlab #505)

1794.	[func]		razvan
	The 'status-get' command send to DHCPv4 or DHCPv6 servers will
return
	information about multi threading settings
('multi-threading-enabled',
	and only if this setting is active, 'thread-pool-size' and
	'packet-queue-size').
	(Gitlab #1305)

1793.	[doc]		tmark
	Added Leasequery hook library to the list of available hook
	libraries in the ARM.
	(Gitlab #1372)

1792.	[doc]		tmark
	Added the Database Connectivity section to the ARM which explains
	how Kea servers respond to back end database connectivity issues.
	(Gitlab #1284)

1791.	[doc]		tmark
	Updated the ARM section for the Lease Commands hook library
	which incorrectly stated that a command return value of 2 would
	be returned when no lease(s) matched the command. The value
	returned is actually 3.
	(Gitlab #1384)

1790.	[bug]		marcin
	Fixed a bug in Kea Configuration Backend observed when using
certain
	MariaDB	database versions. As a result of this bug the Kea
servers were
	unable to fetch configurations stored in the database upon
startup. The
	bug was related to the usage of timestamps which in MariaDB must
be
	set to 1970-01-01 00:00:01 UTC or later. In some cases the Kea
CB used
	out of bounds timestamp values. This bug was observed when using
MariaDB
	10.4.13.
	(Gitlab #1382)

1789.	[bug]		razvan
	Fixed a bug in the lease reclaim process which would not
reschedule the
	timer if the operation failed.
	(Gitlab #1335)

1788.	[bug]*		fdupont
	When a host reservation in a subnet reserves an address, the
	address must be within the subnet. This check was previously
	only done by the host command hook library. Note it does not
	apply to prefix delegation.
	(Gitlab #1254)

1787.	[bug]		razvan
	The recount leases functions consider leases in 'declined' state
as
	'assigned' so that when the lease is reclaimed or reused, no
negative
	counters are generated. The 'subnet[X].reclaimed-leases' and
	'reclaimed-leases' are now cumulative counters and are never
	decremented or reset until server restart. Removed references to
non
	existent 'declined-reclaimed-addresses' counters.
	(Gitlab #1336)

1786.	[bug]		razvan
	Update lease stats when using commands from lease-cmds hook.
	(Gitlab #1065)

1785.	[func]		fdupont
	If enabled, the default value for queue capacity in congestion
control
	has been trimmed down from 500 to 64. The feature continues to
be disabled
	by default.
	(Gitlab #285)

1784.	[build]		wlodek
	Socket path in kea ddns default config was changed to
	/tmp/kea-ddns-ctrl-socket.
	(Gitlab #1379)

1783.	[doc]		tomek
	Installation instructions for RADIUS hook updated.
	(Gitlab #1310)

1782.	[bug]		tmark
	Corrected a bug that causes kea-dhcp4/kea-dhcp6 servers to crash
after
	losing connectivity to a configuration backend database. The
servers
	now correctly honor the max-reconnect-tries parameter.
	(Gitlab #1369)

1781.	[bug]		razvan
	Reject invalid declined state for PD prefix in add and update
	commands in lease-cmds hook.
	(Gitlab #1349)

Kea 1.7.10 (development) released on Jul 29, 2020

1780.	[doc]		wlodek
	Added a section to Kea ARM about tuning performance for kea-dhcp4
	and kea-dhcp6.
	(Gitlab #1285)

1779.	[build]		tmark
	Library version numbers bumped for release.
	(Gitlab #1346)

1778.	[func]*		fdupont
	Changed the order of subnets to follow ascending subnet
identifier.
	(Gitlab #1265)

1777.	[doc]		fdupont
	Added in the Developer's Guide an example about how to cross
	compile Kea for a Raspberry Pi.
	(Gitlab #1221)

1776.	[func]		fdupont
	DHCP servers now log a fatal error message when a reconfiguration
	attempt left a no longer working server. Documentation was
	updated tp propose remedy actions.
	(Gitlab #507,#1166)

1775.	[doc]		vicky
	A Code of Conduct has been added.
	(Gitlab #1143)

1774.	[func]		tmark
	leaseX-del commands now support a new parameter, update-ddns,
	which instructs the server to remove DNS entries for a
	lease after it has been deleted.
	(Gitlab #544)

1773.	[perf]		fdupont
	Kea statistics now uses standard c++11 chrono library instead
	of POSIX time library from boost.
	(Gitlab #1174)

1772.	[perf]		fdupont
	Set kea-lfc process priority to lower than default.
	This change should alleviate CPU utilization spikes caused
	by LFC process observed on some systems.
	(Gitlab #1311)

1771.	[func]		fdupont
	Duplicate ChangeLog entry removed.

1770.	[func]		fdupont
	Added kea-admin lease-stat-recount command which recounts cached
	statistics in MySQL and PostgreSQL lease databases.
	(Gitlab #1196)

1769.	[build]		fdupont
	Added detection of the musl libc which implements dlclose() as
	a no-operation: this behavior breaks Kea expectations for
	hook library unloading.
	(Gitlab #771)

1768.	[func]*		fdupont
	Removed the support of the Logging toplevel entry. Now loggers
must
	be defined in each server toplevel entry.
	(Gitlab #916)

1767.	[bug]		fdupont
	Fixed unit tests failing on systems where an interface is named	
eth0.
	(Gitlab #1043)

1766.	[func]		fdupont
	Optimized the interface manager code and removed the 16 bit limit
	to interface indexes.
	(Gitlab #553)

1765.	[bug]		fdupont
	Corrected a bug in MySQL Config Backend which occasionally caused
	the DHCP servers to overlook some configuration changes. This
	issue could occur when the server fetched configuration changes
	within one second after they they were applied in the database.
	(Gitlab #1247)

1764.	[doc]		fdupont
	Added thread safety consideration sections to library
documentations
	in the developer guide.
	(Gitlab #996,#1264)

1763.	[bug]		fdupont
	Changed the way hook libraries are unloaded. Now unload is done
	in two phases: the first phase calls unload() entry points and
	removes callouts, the second phase unmaps hook library memory
	spaces. This should lead to fewer problems including fewer
crashes
	at exit time. On the other hand, incorrect libraries can stay
	in memory until exit and prevent any (re)load.
	(Gitlab #1282)

Kea 1.7.9 (development) released on June 24, 2020

1762.	[bug]		fdupont
	Fixed the control command execution: either it was deferred by
	DHCP packet processing or a spurious error message was logged.
	(Gitlab #1234)

1761.	[bug]		fdupont
	Found and fixed a possible source of incorrect statistics cached
	in MySQL and PostgreSQL lease databases which in some cases
	made servers fail to start.
	(Gitlab #944,#1196)

1760.	[bug]		razvan
	Fixed log message on DHCPv6 IA_NA lease renew.
	(Gitlab #1276)

1759.	[bug]*		fdupont
	Fixed the way configuration global entries are parsed in DHCPv4
	and DHCPv6 servers. We expect that the change will not be visible
	for sane configurations.
	(Gitlab #1245)

1758.	[func]*		fdupont
	Earlier Kea versions converted "comment" entries to
"user-context"
	scope in the configuration when using config-get. This backwards
	compatibility has now been removed. This may affect users who use
	config-get or config-write commands and use comments in their
	configurations.
	(Gitlab #1100)

1757.	[bug]		fdupont
	config-backend-pull commands were fixed to be applied to the
	current configuration
	(Gitlab #1189)

1756.	[bug]		fdupont
	Made the parking lot API generic thread safe.
	(Gitlab #1255)

1755.	[func]*		fdupont
	Implemented various race avoidance mechanisms in the
multi-threaded
	packet processing: only one query from the same client is
processed,
	subsequent queries from the same client are dropped at the
exception
	of the most recent which will be processed after. When picking
	a free address or prefix from a pool the resource is considered
	as not free for other threads. This is used by the lease commands
	hooks library to avoid conflicts with a minimal overhead.
	Finally individual lease reclamation is exclusive of
multi-threaded
	packet processing.
	(Gitlab #1147)

Kea 1.7.8 (development) released on May 27, 2020

1754.	[func]		marcin
	Improved the procedure of restarting the servers in the
terminated
	HA state. The servers can now be restarted sequentially without
the
	risk of returning to the terminated state right after restart.
	Previously, the servers had to be both shutdown before being
	restarted to avoid returning to the terminated state.
	(Gitlab #1205)

1753.	[func]*		marcin
	Extended the response to the status-get command to include
	information about the progress of the failover procedure
	while the active servers are in the communication interrupted
	state. The new data allow for monitoring the number of clients
	attempting to communicate with the partner which is presumably
	offline, total number of packets sent to the partner and so on.
	The syntax of the response was modified and is incompatible with
	previous Kea versions.
	(Gitlab #1087)

1752.	[doc]		tmark
	Added documentation for the Leasequery premium
	hook library to the ARM.
	(Gitlab #1180)

1751.	[perf]		marcin
	Corrected performance issue occurring while loading large
configurations
	via the MySQL Config Backend. Improper database indexing caused
long
	server startup time as well as long time to respond to various
	commands, such as subnet4-list or subnet6-list.
	(Gitlab #1242)

1750.	[func]		razvan
	Refactored HooksManager so that no lazy initialization is
possible
	from dhcp processing functions. The function getHooksManager is
now
	private.
	(Gitlab #1227)

1749.	[func]		fdupont
	When the version is a development (vs. stable) one (second
	number is odd, e.g. in 1.7.x) a server or agent logs a
	warning to dissuade use in production.
	(Gitlab #1184)

1748.	[func]		marcin
	Added two extensions to the HA hooks library. Firstly, the active
	servers no longer wait for the lease update acknowledgments from
	the backup servers. Secondly, the new passive-backup mode allows
	for running a single active server with a number of backup
	servers.
	(Gitlab #999)

1747.	[bug]		fdupont
	Multi-threading and congestion handling were made incompatible:
	when both are enabled by a configuration the dhcp-queue-control
is
	silently disabled, when packet-queue-size is not 0 and the
	multi-threading packet queue is full the oldest packet is dropped
	to make room for a new received one.
	(Gitlab #1173)

1746.	[bug]		fdupont
	lease4-add and lease6-add commands now return an error when the
	lease already exists.
	(Gitlab #1170)

1745.	[bug]		fdupont
	Made state model and external sockets thread safe.
	(Gitlab #1095)

1744.	[func]		razvan
	Stopping packet processing when changing or reloading
configuration.
	(Gitlab #1188)

Kea 1.7.7 (development) released on Apr 29, 2020

1743.	[doc]		tomek
	ISC now provides a dashboard solution for Kea. Added
documentation
	pointers about the ISC Stork project.
	(Gitlab #1191)

1742.	[func]		fdupont
	Added new cumulative statistics: for each assigned IPv4 address,
	IPv6 NA address or IPv6 PD prefixes
cumulative-assigned-addresses,
	cumulative-assigned-nas or cumulative-assigned-pds global and
	per subnet is increased. A spelling error in the result-set of
	the stat-lease4-get of the stat cmds hook library was fixed.
	(Gitlab #816)

1741.	[func]		fdupont
	When the MySQL InnoDB reports a deadlock (very rare event)
	the failed query is rerun.
	(Gitlab #1160)

1740.	[bug]		fdupont
	Incorrect signal handling in the process library (used for
	control agent, d2 and netconf server but not by DHCPv4 or
	DHCPv6 servers) was replaced by the boost ASIO signal set.
	(Gitlab #1096)

1739.	[func]		razvan
	Added multi threading configuration parameters which can be used
	to adjust server performance according to setup resources and
needs:
	enable-multi-threading, thread-pool-size and packet-queue-size.
	There is also an automatic detection implemented by using
	thread-pool-size set to 0. However, the packet-queue-size must be
	manually configured and does not scale automatically.
	The temporary -N command line option was removed.
	The multi threading is disabled by default.
	(Gitlab #893)

1738.	[func]		fdupont
	Added new global parameters statistic-default-sample-count and
	statistic-default-sample-age to set the default values used
	for sample keeping limits.
	(Gitlab #1005)

1737.	[func]		tmark
	Added store-extended-info parameter to kea-dhcp4 and kea-dhcp6
	which enables the storage of additional information per lease.
	This has been added in anticipation of supporting LeaseQuery.
	(Gitlab #1010)

1736.	[doc]		fdupont
	A default logging syntax has been updated to reflect recently
added
	multi-threading capabilities. The process is now identified by
	name/process-id.thread-id, e.g. kea-dhcp4.dhcpsrv/8475.12345,
where
	12345 is the thread-id. Its exact syntax is OS dependent. The
	logging syntax can be tweaked using `pattern` option for logging.
	(Gitlab #1150)

Kea 1.7.6 (development) released on Mar 25, 2020

1735.	[func]		wlodek
	Added clean output mode to perfdhcp with configurable separator
	for periodic reports.
	(Gitlab #1046)

1734.	[doc]		vicky
	A list of supported OSes is now described in a separate
	platforms.rst file.
	(Gitlab #1055)

1733.	[func]		tmark
	Added lease4-resend-ddns and lease6-resend-ddns commands to
	the Lease Commands hook library.  These commands may be used to
	instruct kea-dhcp4 or kea-dhcp6 to resend a request to update a
	lease's DNS entries to kea-dhcp-ddns.
	(Gitlab #1106)

1732.	[func]		marcin
	Client classes specified within host reservations can be used
	to influence subnet choice within a shared network and pool
	selection within a subnet.
	(Gitlab #1139)

1731.	[func]		razvan
	The NameChangeSender class is thread safe, making DNS updates
	compatible with multi-threading packet processing.
	(Gitlab #1148)

1730.	[func]		razvan
	Added -N command line switch that enables experimental
multi-threading
	support. Number of threads can be specified (e.g. -N8) or Kea
can be
	told to autodetect number of CPU threads (-N0). This feature is
	experimental. It hasn't been tested extensively and is known to
cause
	problems with DDNS and HA. Do not use in production!
	(Gitlab #893)

1729.	[func]		razvan
	The RAII MultiThreadingCriticalSection class is now able to
	automatically stop and start the packet thread pool in order to
	perform server configuration and avoid race conditions in non
	thread safe code.
	(Gitlab #1016)

1728.	[bug]		tmark
	Memfile now supports commas in the hostname and user-context
	columns.  Commas in either column now escaped as "&#x2c" when
	written out, and unescaped when read back in.
	(Gitlab #608)

1727.	[bug]		tmark
	When shutting down due to lost backend database connectivity,
	kea-dhcp4 and kea-dhcp6 processes will exit with a non-zero
value.
	This was temporarily altered by #1108. In addition, the
"shutdown"
	command now supports an "exit-value" argument.
	(Gitlab #1115)

1726.	[func]		razvan
	Handling SKIP and DROP state in hooks so that the same operation
	is not performed multiple times. Some hooks will throw exceptions
	if the pktX_receive or pktX_send is handled by other hooks, in
	such case, the configuration order of the hooks must be changed.
	(Gitlab #1088)

Kea 1.7.5 (development) released on Feb 26, 2020

1725.	[func]		wlodek
	Added perfdhcp command option to enable checking address
	and/or prefix uniqueness.
	(Gitlab #1021)

1724.	[func]		razvan
	Added packet thread pool in dhcpv4 and dhcpv6 servers. It adds
	the ability to handle processPacket function on multiple threads.
	When enabled, parked packets are also added to the queue of items
	to be handles by the thread pool. The packet thread pool is
	currently disabled and there is no option to enable it yet.
	(Gitlab #892)

1723.	[func]		tmark
	Hostname sanitizing is now globally enabled by default.  Prior
	to this it was disabled.
	(Gitlab #1048)

1722.	[bug]		razvan
	Compilation fix for MySQL/MariaDB on Ubuntu 19.10.
	(Gitlab #1071)

1721.	[func]*		fdupont
	Added multi_threading_compatible function in hooks to retrieve
	the compatibility with multi-threading. This function is called
	when the library is loaded and if it reports 0 (incompatible) and
	multi-threading is enabled, then the configuration will be
	rejected. The absence of this function from the library defaults
	to incompatibility with multi-threading. All hooks and premium
	hooks must be updated to be able to be used with multi-threading.
	However, not all libraries are (or will ever be) compatible.
	(Gitlab #947)

1720.	[func]*		tomek
	The next step status in pkt4_send hook point now is able to
	distinguish between SKIP (Kea will skip packing the packet with
	the assumption that a hook already did that) and DROP (Kea will
	drop the packet). Previously both SKIP and DROP were interpreted
	as skip packing.
	(Gitlab #1090)

1719.	[func]		razvan
	Prepared CalloutManager to be used in multi-threading by moving
	the current library index and hook index to the CalloutHandle.
	This change removes the CallountHandle::getLibraryHandle, along
	with the possibility of dynamically registering/deregistering
	callouts inside callouts.
	(Gitlab #957)

1718.	[bug]		tmark
	kea-dhcp4 and kea-dhcp6 now shutdown gracefully by executing
	the shutdown command, if connectivity with a backend database
	has been lost and retries are either disabled or have been
	exhausted. Prior to this they simply invoked exit() which
	could orphan control socket files or cause segfaults unloading
	the CB Cmds hook library.
	(Gitlab #1108)

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

1716.	[func]		razvan
	Implemented thread safe stats manager and stats context.
	(Gitlab #891)

1715.	[bug]		tmark
	Kea servers now detect and remove orphaned control channel
	sockets.  This corrects a failure of the servers to restart
	with an error of "address already in use" following a fatal
	loss of database connectivity.
	(Gitlab #1097)

Kea 1.7.4 (development) released on Jan 29, 2020

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)

Kea 1.7.3 (development) released on Nov 18th, 2019

1699.	[func]		fdupont, marcin
	Implemented status-get command which returns general status
	information about a Kea server status and optionally
	HA specific information if the HA hooks library is present.
	(Gitlab #1041)

1698.	[doc]		wlodek
	Avalanche scenario for perfdhcp is now documented.
	(Gitlab #876)

1697.	[doc]		wlodek
	Forensic logging documentation now mentions database
	configuration.
	(Gitlab #943)

1696.	[func]		fdupont
	A new hook library libdhcp_bootp has been implemented. Once
	loaded, this hook will provide support for BOOTP packets, as
	defined in RFC1497. Please see the "BOOTP support" Section in the
	ARM for details.
	(Gitlab #898)

1695.	[func]		fdupont
	Added support of BOOTP leases with infinite valid lifetime.
	This includes representation of such leases in MySQL and
	PostgreSQL databases which the expire date can be a 32 bit
	integer.
	(Gitlab #897)

1694.	[doc]		marcin
	Described the usage of the ha-heartbeat command to check the
	states of the HA enabled DHCP servers.
	(Gitlab #998)

1693.	[func]		fdupont
	Client supplied ciaddr is now sent back when responding to
	DHCPINFORM
	(Gitlab #992)

1692.	[build]		fdupont
	Better support for google test 1.10.0.
	(Gitlab #954)

1691.	[build]		tomek
	Google test version detection improved.
	(Gitlab #206)

1690.	[func]		fdupont, razvan
	As a preparation for upcoming multi-threading, the PgSQL
	connection pool has been implemented. This code is not
	usable on its own yet, but it will allow all threads
	to share a pool of connections in the future. This
	should improve the overall PgSQL lease backend performance.
	Fixed some log messages that were missing lease type details
	in DHCPv6 PostgreSQL lease manager actions.
	(Gitlab #1044)

Kea 1.7.2 (development) released on Nov 27, 2019

1689.	[bug]*		fdupont
	The default Kea Control Agent's configuration file uses port 8000
	instead of 8080 for the agent. This corrects the mismatch between
	the default port number used by the kea-shell and the agent.
	(Gitlab #793)

1688.	[func]		fdupont
	Added a new callout (hook point) executed when the server has
	completed a configuration update using the Config Backend.
	(Gitlab #596)

1687.	[doc]		fdupont
	Described for developers the way for a hook library to be
loadable
	only for specific server(s) and applied as an example to ha.
	(Gitlab #50)

1686.	[func]		razvan
	Added a generic ThreadPool class which can be used to process
	functor work items in parallel, on multiple threads. It uses
	a queue container to manage the work items.
	(Gitlab #883)

1685.	[build]		fdupont
	Small build improvement. The fcntl.h header is included in more
	portable way. This should make it easier to build on Alpine
systems and
	possibly other systems.
	(Gitlab #765)

1684.	[func]		fdupont
	As a preparation for upcoming multi-threading, the MySQL
	connection pool has been implemented. This code is not
	usable on its own yet, but it will allow all threads
	to share a pool of connections in the future. This
	should improve the overall MySQL lease backend performance.
	(Gitlab #960)

1683.	[bug]		wlodek
	Perfdhcp is able to parse incoming packet and determine
	if included IA_NA/IA_PD options are correct, counter
	of rejected leases is introduced for all DHCP v6 message
	exchanges. Perfdhcp will no longer send Request/Renew/Release
	message without proper IA_NA/IA_PD included.
	(Gitlab #572)

1682.	[bug]*		tmark
	Added logic to core code and HA hook lib to allow HA peers
	to detect and handle out of bandwidth socket events.  This
	corrects a defect introduced in Kea 1.6.0 that can cause
	an HA server to become unresponsive when an HA socket has
	been closed by a peer.  Note that there is a change to the
	signature of the external socket callback handler invoked
	by IfaceMgr.  Custome hook libraries happen register external
	sockets with IfaceMgr will require modification and
	recompilation.
	(Gitlab #964)

Kea 1.7.1 (development) released on Oct 30, 2019

1681.	[func]		fdupont
	Added new command config-backend-pull which forces the server
	to immediately poll the configuration updates from the
	configuration backend
	(Gitlab #904)

1680.	[bug,build]	Kristoffer Larsen
	A bug in Makefile has been fixed. The changes made to
	src/lib/dhcpsrv/alloc_engine_messages.mes are now picked up
	properly.
	(Gitlab #752)

1679.	[func]		fdupont
	Added new commands to the lease_cmds hooks library to search for
	leases by hardware address, client-id, DUID and hostname. Now
	hostnames are stored in lower case within the lease database.
	(Gitlab #393)

1678.	[build]		fdupont
	The arguments passed to configure are now stored and are
available
	using -W command line option.
	(Gitlab #869)

1677.	[doc]		wlodek
	Sample configs now all use the same paths for control sockets.
	(Gitlab #795)

1676.	[func]		fdupont
	A new hook - flex-option - has been developed. It allows setting
	up DHCPv4 and DHCPv6 option values dynamically, using expression.
	This capability is very useful when you want to generate option
	value procedurally. For details, see new section "Flexible Option
	for Option value settings" in the Kea Administrator Reference
	Manual.
	(Gitlab #219,!523, git 2bf854c029b9b07ee6161bc1fcb4dfdc9846ee42)

1675.	[func]		fdupont
	Both DHCPv4 and DHCPv6 can now listen on and send responses
	to a custom UDP port, as specified with the -p command line
	option. This capability is mostly useful for testing.
	(Gitlab #677,!548, git 47e709fb7b89464d4473e8c7cb138f539042d68b)

1674.	[perf]		fdupont
	Added a Multi Threading Manager singleton class in the util
library.
	(Gitlab #962,!566, git 66b090e54b45bdeefda266ddd62e42b46ed48d1d)

1673.	[bug]		tmark
	Fixed a bug introduced in Kea 1.6.0 (see #539) that caused
	kea-dhcp4 and kea-dhcp6 to discard inbound packets containing
	string options that consist solely of nulls.  The servers
	will now quietly omit empty or all-null string options from
	inbound packets.
	(Gitlab #900,!561, git c75a7c10bde74f59d481a7717b4e03b9cb2268a6)

1672.	[build]		fdupont
	Deprecated bind1st and bind2nd templates were replaced with
	lambda expressions or plain bind templates.
	(Gitlab #919,!521, git b12fa3374454c9c0d749557d5532aab55dbc58d9)

1671.	[bug]		tmark
	Corrected an issue in kea-dhcp6 where the server would fail
	to extend the expiry of a existing dynamic lease assigned to
	client with host reservation.
	(Gitlab #754,!558, git c223380012b82c93292528b593002c2b80b5361b)

1670.	[func]		fdupont
	Added searches for host reservations by hostname and by hostname
	and subnet.
	(Gitlan #392,!529, git 50068ada6b277c9251de9062501d8c478a8f5529)

1669.	[func]		tmark
	Rather than within the 'dhcp-ddns' section, DDNS behavioral
	parameters may now be specified at global, shared-network,
	and subnet scopes.  Implemented for both kea-dhcp4 and
	kea-dhcp6.  Not yet supported by Config Backend or Netconf.
	(Gitlab #35,!517, git 49ce6286f5d00f99c1c890f12cbc0fd633c9dbf6)

1668.	[build]		fdupont
	The Kea util thread library was removed.
	(Gitlab #907,!519, git 1b27dc52aae23753643461086f0950b125bf9c93)

1667.	[build]		fdupont
	The availability of C++11 thread, mutex, condition variable and
	atomic libraries is now checked by ./configure.
	(Gitlab #918,!520, git baf4097520c1cd38366ee4f33a95dde040906e9e)

1666.	[doc]		tmark
	Added note in ARM about manually admining cb data being possible
	but not supported.
	(Gitlab #917,!518, git f242e5c2e0e14331172671477dce3a6597691b55)

Kea 1.7.0 (development) released on Sep 25, 2019

1665.	[build]		tmark
	Bumped up library version numbers for Kea 1.7.0 final release.
	(Gitlab #924,!526, git c4061d0fdd660c8e375b4e1317603935ccc00b39)

1664.	[build]		razvan
	Make sysrepo_config detect installed sysrepo version.
	(Gitlab #766,!449, git e1a236fa4f4680d3eadade6b5f5a6a6065620a5b)

1663.	[build]		fdupont
	Dropped support for Botan 1.x crypto library in Kea as these
	versions are now end of life.
	(Gitlab #345,!498, git ba028eee986c0da963754c6fcb74790081557bec)

1662.	[bug]		marcin
	Prevent deadlock in the Kea DHCP servers caused by allocating
	memory in the system signal handler. The issue was found on
	CentOS 7.6, but could possibly affect Kea running on any other
	OS.
	(Gitlab #796,!504, git f858d9d0b63a18370ebb8bd7d1b8250d0c5a1cb5)

1661.	[bug]		tmark
	kea-dhcp4 now rejects inbound client messages that have
	neither a hardware address nor a client identifier.
	(Gitlab #821,!501, git 60baf65d0c9de384b0da147b50b7fc3180fc54dd)

1660.	[func]		franek
	Statistics of the DHCP packets are now initialized upon the
	server startup. This makes the statistics available for fetching
	via control channel immediately after the server is started.
	(Gitlab #755,!503, git f0238d1b6e88dfedaa91029ec3b65e06c14cab34)

1659.	[bug]		razvan
	Corrected an issue in the DHCPv4 server logic whereby the
user-defined
	option definitions were not committed which could result in
	configuration failures when values for such options were
specified.
	(Gitlab #729, !434, git e5b68fb226161dcdef0e4d2d9d03d9bdb95af5e2)

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