[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 "," 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