[Kea-announce] Kea 1.3.0-beta is ready and available for testing!

Wlodek Wencel wlodek at isc.org
Fri Sep 29 17:20:15 UTC 2017

On behalf of ISC and Kea team I'm pleased to announce that
new version 1.3.0 beta is now available for testing!

      We are looking for your feedback!

Welcome to the 1.3.0-beta release of Kea. Kea is a new DHCP implementation
being 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 REST API to control DHCP servers, an
example shell client to connect to the CA 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 can be
stored in a MySQL, PostgreSQL or Cassandra database; it can also be stored
in a CSV file. Host reservations can be stored in the configuration file;
they can also be stored in a MySQL or PostgreSQL database.

Version 1.3.0-beta adds the following features to Kea:

* Shared networks - typically a DHCP server uses one IP subnet for each
physical link it services. However, there are some cases where it is
desired to have more than one IP subnet active in specific physical
location. This capability can be useful in several ways. The most typical
case is when a network grows and the administrator decides to configure
additional subnet in the same location for new devices. Other use case are
networks that want to segregate specific types of devices into different
subnets. The most prominent example are cable networks that want to
separate the cable modems and its management interfaces from the end
user's devices.

* REST interface over HTTPS - We have secured the new REST API for Kea
using HTTPS with all the benefits it brings in: authentication,
confidentiality and integrity. The sample client provided can use HTTPS
now. We also have expanded the size of commands and possible responses via
the REST API, removing the 64K limitation being present since Kea 1.2.
This makes handling of large configurations possible. With these changes
the REST API is now ready for production use! This feature is sponsored by
the Mozilla MOSS award.

* Lease management via REST API - New API commands enable querying,
adding, reporting on current leases, and modifying existing leases while
Kea is running. This allows the administrator (or any system that
interacts with Kea) to check presence and status of leases and make
necessary changes as needed. This feature is sponsored by the Mozilla MOSS

* Subnet management via REST API - Add, remove and modify subnets in Kea
via the API, without resending the entire Kea configuration. This will
make managing subnets via the api more feasible for configurations with a
large number of subnets or deployments that want to avoid small
interruptions when updating the whole configuration. This feature will be
reserved for the premium version of Kea to help get financial support for
the project. This will be in the new Subnet Commands hook.

* New options - This release introduced support for 21 DHCPv4 and 10
DHCPv6 options. Also, support for DHCPv4 vendor specific option (code 43)
has been improved. It is now possible to use vendor-specific syntax for
that option.

* Other bug fixes and small improvements - As usual, we fixed many bugs
and did other small improvements. In total 74 tickets were closed.

== License ==
Kea 1.3.0-beta has been released under the Mozilla Public License, version


== Download ==

The Kea 1.3.0-beta source may be downloaded from:


A PGP signature of the distribution is at


The signature was generated with the ISC code signing key which is
available at


ISC provides detailed documentation, including installation instructions
and usage tutorials in the Kea Administrator Reference Manual.
Documentation is included with the installation or via
http://kea.isc.org/docs in HTML, plain text, or PDF formats.  ISC
maintains a public open source code tree at
https://github.com/isc-projects/kea and wiki pages with roadmap and issue
tracking at http://kea.isc.org.

Limitations and known issues with this release can be found at


We'd like 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
configuration or use case.  Also we would like to hear whether the
documentation is adequate and accurate (please open tickets for
documentation omissions and errors). We want to hear from you even if
everything worked.

== Support ==

Professional support for Kea is available from ISC. Free best-effort
support is provided by our user community via a mailing list. Information
on all public email lists is available at


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 the ticket tracking system at


== Changes ==

The following summarizes changes and important upgrade notes since the
previous release (1.2.0). (See the git history for more details and
additional development.)

1304.    [bug,func]    fdupont
     The DHCPv4 Vendor Specific Information (code 43) option and
     private options (codes 224-254) can be redefined at the global
     scope or inside a client-class. This allows to support different
     definitions following the DHCPv4 Vendor Class Identifier (code 60)
     option or when defined as a binary option to accept with problems
     option 43 carrying a raw value.
     (Trac #5073, git b290b3cbaa926d4e9613f6607c5fcbae2301b266)

1303.    [func]        tmark
     The command handlers in the lease_cmds hook library are now
     implemented has hook callouts and registered with the Hooks
     manager. Prior to this they were registered as command handlers
     with the Command Mgr.
     (Trac #5332, git c902bda9f026720f6efbf2e5ad407302aeb5e466)

1302.    [func]        marcin, tomek
     DHCPv6 server supports shared networks. It allows for grouping
     multiple subnets and use them interchangeably to allocate
     IP addresses and other resources to a client located on the
     particular link. This mechanism is useful to extend an
     address space for the client belonging to a particular
     subnet and/or to segregate clients being on the same link but
     belonging to different classes, e.g. cable modem vs router.
     (Trac #5307, git 110d0c9e403af28e6810141f978d9bf55c381f14)

1301.    [func]        fdupont
     Added some standard option definitions which are supported
     by ISC DHCP but not (yet) by Kea.
     (Trac #5227, git 4bef838245f08fca5f2cf037cd3a75278b77f8f9)

1300.    [doc]        tomek
     Documentation for shared networks added.
     (Trac #5310, git 41fd3bb7ed2f4cd15db6cbd14713f4474f659c92)

1299.    [doc]        fdupont, tmark
     Added an example stunnel configuration file to demonstrate
     using kea-shell through https.
     (Trac #5282, git efe044fa90d53398e215d2bf31e00e83353e8774)

1298.    [func]        marcin, tomek
     DHCPv4 server supports shared networks. It allows for grouping
     multiple subnets and use them interchangeably to allocate
     IP addresses and other resources to a client located on the
     particular link. This mechanism is useful to extend an
     address space for the client belonging to a particular
     subnet and/or to segregate clients being on the same link but
     belonging to different classes, e.g. cable modem vs router.
     (Trac #5306, git 4f2fca69be32997c718ab2c7f37ac80ed4e41d15)

1297.    [func]        tmark
     Added a hook point, "command-processed", to kea-dhcp4
     and kea-dhcp6 servers. This hook point occurs after
     a control channel command has been received and
     (Trac #5111, git 043d17b0688d4ab25b12469d27859983cb297d07)

1296.    [bug]        tmark
     Altered the mysql backend logic to disable auto_reconnect and
     set session value of wait_timeout to a very large values. This
     avoids a segfault in MySQL client library caused by auto-reconnects
     occurring when kea server's MySQL connection is idle for longer
     than the global MySQL wait_timeout.
     (Trac #5354, git 9881ef6d772f27de82c048e198ba0ff9e71b9351)

1295.    [bug]        tomek
     DHCPv4 and DHCPv6 servers are now able to parse shared networks.
     A basic shared networks examples added.
     (Trac #5357, git 74b824cc80f8be66084308c0bf12c1a71f311915)

1294.    [func]        marcin
     Implemented data structures holding configuration of shared
     networks. The new structures are unused until remaining tickets
     for shared networks implementation are completed.
     (Trac #5305, git 76dd46f7070c141cc89d772d69a897b67bd179a1)

1293.    [func]        tomek
         logging messages are no longer emitted.
     (Trac #5345, git 779040fa399fb2da271569dc315294463e28f852)

1292.    [func]        tomek
     User contexts are now supported for subnets. This adds a new
     functionality, but also makes the existing documentation example
     (Trac #5350, git 828ecb6dbdaaedd97d2af79dfa9b7f4845d3a049)

1291.    [func]        fdupont
     The configuration parser now checks for mandatory parameters that
     are missing.
     (Trac #5124, git af0f3d50a835f64a5f8a47c47ef464b119a49643)

1290.    [bug]        marcin
     Corrected a bug causing illegal memory access while
     retrieving server hostname and boot file name fields from
     the host reservation database. Many thanks to Juan Settecase
     for his assistance in identifying this issue.
     (Trac #5340, git 2fdc7efcb862ced3c1054620bf14e75a0db6aed2)

1289.    [bug]        marcin, tmark
     Corrected handling of EAGAIN and EWOULDLBOCK errors in
     UnixDomainSocket. This was causing intermittent command
     channel write errors in kea-ctrl-agent on some Debian systems.
     (Trac #5336, git db251cb66ad77ba28ab44281323ddeb23cf29506)

1288.    [func]        marcin
     Documented subnet_cmds library in the Kea User's Guide.  Also moved
     several classes from dhcp<4/6> into lib/dhcpsrv to facilitate
         subnet command parsing.
     (Trac #5315, git d259f330a1690b20eb368f6252f5da2cdb6187de)

1287.    [bug]        tmark
     Logger configuration now correctly uses maxsize and maxver
     parameters, allowing log rotation to function properly.  Prior to
     this these values were not being propagated downward, causing log
     rotation to always be disabled.  The defaults for maxsize and
     maxver are 10Mb and 1 respectively.
     (Trac #5324, git 75f148458bdeeed27eb877cc2c3ce3069b152f38)

1286.    [func]        marcin
     Configured subnets are now indexed by subnet identifier and
     prefix for faster subnet lookups in the configuration.
     (Trac #5314, git 894aeb048b7281f947f87a5d6dc5112fac4a86fb)

1285.    [func]        tomek
     Several new commands implemented in lease_cmds library:
     lease4-del, lease6-del, lease4-update, lease6-update,
     lease4-wipe and lease6-wipe that allow deleting and updating
     leases and also wipe all leases from a specific subnet.
     (Trac #5280, #5281, 94ff2448c8cf6e3321f4d1b3666a2e2b736f6c50)

1284.    [func]        tomek
     A new library, lease_cmds, has been implemented. Its intended
     purpose is to support commands for lease management. Currently
     supported commands are: lease4-add, lease6-add, lease4-get,
     lease6-get. Additional commands and documentation are planned.
     (Trac #5272, #5279, git 785c2e521b198a03d26bde4a804638bfc19ce91b)

1283.    [func]        fdupont
     An 'always-send' parameter has been added to options
     configuration.  It allows an option to be always sent, even if
     a client didn't request it.
     (Trac #5241, git cef2b630c720a442710efc0d1615b7c7bce01e54)

1282.    [bug]        fdupont
     Now all interface service sockets are closed before interface
     re-detection. Note if the re-configuration fails they remain
     (Trac #5333, git 8bff2ec336456de51d0d9d3ff011d28a6a61ef66)

1281.    [build]        tmark
     Configure script now correctly recognizes static boost_system
     library as well as checks for the presence of static glibc static
     libraries when --enable-satic-link is specified.
     (Trac #5337, git 42548148cbeaaa285519e121f493d52607f1e8a0)

1280.    [build]        waltsteverson
     Missing header for PD-exclude DHCPv6 option is now installed.
     (Github #51, git 36a8e1b8f687a6398af8a10f241e8d19e9de33d8)

1279.    [build]        waltsteverson
     Compilation fixes for Alpine Linux
     (Github #50, git 824afa63354e045a5e4f6437246c329d359e04dd)

1278.    [doc]        jsoref
     Many spelling corrections.
     (Github #52, git 1dcaef6f8e7901d628c8638fc2f8145ac0279586)

1277.    [func]*        marcin
     Added support to Command Manager to process commands using
     callouts implemented within hooks libraries.
     (Trac #5330, git 8041d177ed5587101ecb47a09820a7e67e42a066)

1276.    [build]        tmark
     The configure script now configures the build to require the Boost
     system library (boost_system) by default.  The library must be
     installed and you may need to specify
         "--with-boost-lib-dir=<path>". Prior to this the default was to
         attempt to build Boost with headers
     only.  Building with headers only may still be done, though it is
     strongly discouraged, by specifying "--enable-boost-headers-only".
     (Trac #5215, git b6f1ee0d1210e35631369fc697c76cc3cf2c4130)

1275.    [func]        marcin
     LibraryHandle object can now be used to register handlers
     for the control commands in a hook library.
     (Trac #5329, git 966cc24ae5593ebb08d6f02a11dab23463ebad7e)

1274.    [func]        marcin
     It is now possible to manage Control Agent with keactrl.
     (Trac #5108, git 53ba9f8197a25abd2c52ee3f5e95bc4e4be0241f)

1273.    [doc]        marcin
     Documented in the User's Guide that the server terminates
     when database connection is lost.
     (Trac #5320, git 5c8b277e8041b53b27a87b32d162ab41ef8b43d7)

1272.    [bug]        marcin
     Fixed inefficient leases indexing in the memfile lease
     manager causing increased CPU utilization during lease
     (Trac #5328, git 23b490414f5575b252c8c42fbe93ad2c57d47953)

1271.    [doc]        marcin
     Documented how to setup secure connection to the Kea
     control    channel.
     (Trac #5304, git a920453bbcf9ffa7200eeddca6323faeff498f16)

1270.    [bug]        tmark
     Added a distribution rule to src/bin/d2/Makefile.am so
     d2_parser.yy will now be included in the distribution source
     tree. Also added entries for missing headers to asiolink/
     (Trac #5325, git 199003d7aa9f8d4a7f8daa73f8259e951bc03217)

1269.    [func]        marcin
     Command manager can now handle large responses to control
     commands. Prior to this change the size of the response
     was limited to 64k. The server now also signals timeout
     after 10s if the connection lasts too long.
     (Trac #5318, git 8531a65521ea42f01f3bed444b054e92f7bd1a46)

1268.    [func]        fdupont
     Kea now re-detects network interfaces every time configuration is
     changed. 're-detect' parameter added to restore old behavior, if
     (Trac #3389, git b2ce84790c33d1580dcfa773d7fcfb65c27addc7)

1267.    [bug]        fdupont
     Unit-tests for libdhcp now ignore ENOPROTOPT when setting
     SO_REUSEPORT to improve compatibility with older RedHat versions.
     (Trac #5243, git a7b478e1d1f7f0b38055086fe9ac053e4fab2850)

1266.    [func]        fdupont
     It is now possible to define options in DHCPv4 pools.
     (Trac #5288, git aa2839caab8d885e5bceca6f506162debd239b3f)

1265.    [func]        fdupont
     Extended classification relay6[nest] syntax to allows counting
     relays from the DHCPv6 client side by using negative number,
     e.g. relay6[-1] represents the first relay (closest to the
     (Trac #5287, git 7d0f7a8372dcf256fea8ac13330f0e3e7ed2e8ef)

1264.    [func]        marcin
     Kea's command manager has been re-implemented to use ASIO.
     Simultaneous connections over the control channel are now
     (Trac #5317, git 4139a2f41bb3736615bdfa278746962a16384d0d)

1263.    [doc]        marcin
     Added example configurations of the nginx and Apache2 HTTPS
     servers running as reverse proxy for Kea RESTful API.
     (Trac #5302, git 48113aba218603afac4d457075458d4988e4082b)
     (Trac #5303, git b3113da16eb5c6fa323068f0a57dfa30f42893d2)

1262.    [func]*        marcin
     Renamed "dhcp4-server", "dhcp6-server" and "d2-server" parameters
     of the Control Agent configuration to "dhcp4", "dhcp6" and "d2"
     (Trac #5190, git fc67885022115df76425c6901959cedee63a93b9)

1261.    [bug]        marcin
     Eliminated valgrind errors in libkea-http.
     (Trac #5261, git 34addef4a654665c6022f0269d51970c72431ac2)

1260.    [bug]        fdupont
     Corrected logic in prefix delegation that was causing multiple
     entries to be written to the lease file when renewing or rebinding
     a prefix.
     (Trac #5104, git b9ab6ebe7a491c062bc8b0b42afc53f4d6cee011)

1259.    [func]        marcin
     Implemented timeout for the control commands forwarded between
     the Control Agent and Kea servers. The enhanced forwarding
     mechanism uses asynchronous calls over the unix domain sockets.
     It also detects the JSON structure boundaries when receiving it
     over the stream sockets.
     (Trac #5189, git e48d9399c215406f2dab1601d22d6c932b4af271)

1258.    [bug]        fdupont
     Fixed wrong python package path when kea-shell was configured
     without a prefix.
     (Trac #5214, git 44908c5fa56bfa7e1113078f43c458687a97388a)

Thank you again to everyone who assisted us in making this release
possible. If you would like to contribute to ISC to assist us in
continuing to make quality open source software, please visit our
donations page at http://www.isc.org/donate-to-isc/.

We look forward to receiving your feedback.

More information about the Kea-announce mailing list