= Kea 1.1.0-beta, August 31 2016, Release Notes =
Welcome to the 1.1.0-beta release of Kea. Kea is an alternative DHCP
implementation being developed by Internet Systems Consortium, Inc. that
features fully functional DHCPv4 and DHCPv6 servers, a dynamic DNS update
daemon, 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 supports prefix delegation. Lease
information can be stored in MySQL, PostgreSQL or Cassandra databases;
it can also be stored in a CSV file. Host reservations can be stored
in configuration file, MySQL or PostgreSQL.
Version 1.1.0-beta adds the following features to Kea:
* Additional Database Backend - Kea 1.1.0 has added preliminary support
for Cassandra as a database backend. In this release of Kea it can
only be used to store lease information, it is not able store host
reservations. Cassandra support is currently considered experimental.
Use with caution.
* Host Reservations - Kea 1.0 contained limited support for storing host
reservations in the database backend. Kea 1.1.0-beta has expanded that
capability, allowing host reservations to be stored in a MySQL or PostgreSQL
database. In particular, Kea 1.1.0-beta:
- Adds host reservation (DHCPv4 and DHCPv6) using the PostgreSQL backend.
- Adds host reservation for DHCPv6 to the existing MySQL support.
- Significantly extends the existing host reservation capabilities to
include reservations of specific DHCP options, reservations of siaddr,
sname, and file fields within DHCPv4 messages, and reservations of
multiple IPv6 addresses/prefixes.
- Allows the MySQL or PostgreSQL host reservation database to be configured
read-only, in which case Kea will be able to retrieve reservations from it,
but not insert or update existing reservations. This feature is useful
when a database (or database view) exists for the particular deployment
and the administrator doesn't want to grant read-write access for
* Client Classification - In Kea 1.1 the client classification system has
been expanded. A class definition contains a name and a test expression
of arbitrary complexity; if the test expression evaluates to "true" the
client is a member of that class. A client may be a member of multiple
classes and can acquire options from different classes. If the configuration
contains multiple definitions for data for an option in two or more of
the global, class, subnet or host entries, the server will choose the
definition from the most specific entry.
There are a number of objects and operators available for use in the test
- Operators include: equal, not, and, or, substring, concat
- Objects include:
- literals: string, hexadecimal, IP address and integer
- options: existence and content
- relay options for DHCPv4 and DHCPv6: existence and content
- subfields within vendor and vendor class options: existence and content
- selected fields from DHCPv4 and DHCPv6 packets
- Classes may be used to select subnets
- Classes and class specific subnets may contain option data to serve to
clients within that class
* Hook Library Parameters - It is now possible to specify parameters for hook
libraries in the Kea configuration file. In earlier versions of Kea, hook
library authors had to use a external mechanism (such as file of a known
name) to pass information across.
Since version 1.0.0 Kea has been released under the Mozilla Public License,
== Download ==
The Kea 1.1.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
and wiki pages with roadmap and issue tracking at
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.0.0). (See the git history for more details and
1160. [build] marcin
Bumped up version numbers of Kea libraries and KEA_HOOKS_VERSION
for the Kea 1.1.0 beta release.
(Trac #4632, git 93941523e039a1cc4bb34182a290f9d7b805df34)
1159. [func] marcin
MySQL database schema updated to version 5.0.
(Trac #4562, git 0e40b35e280f0845686bcfdb2efb577c7878ede6)
1158. [func] tomek
It is now possible to specify fixed fields (next-server,
server-hostname and boot-file-name parameters) for client classes.
(Trac #4626, git 89cf54524d8b55cc982ab2146915c0a90fc6efe2)
1157. [func] marcin
Added support for static reservations for fixed fields in
DHCPv4 messages: siaddr, sname and file.
(Trac #4552, git 9b79fe005dd77328ea7c596fc6886f8fb838d1cf)
1156. [bug] tmark
Lease statistics are now recalculated during server startup and
after each successful reconfiguration for Memfile, MySQL, and PostgreSQL
back ends. This addresses issues caused by accumulated values being lost
across restarts and reconfigurations making rendering values incorrect.
(Trac #4294 git 0abdcf15f85861ffcb67d50fa4ce3965d25e4a9f)
1155. [func] marcin
Kea can be configured to operate using read-only host database.
This is only supported for MySQL and PostgreSQL databases.
(Trac #4489 git 0d8dc7affb67ad8066b44c6f81532b79a641d50b)
1154. [bug] stephen
Changes to logging to avoid premature destruction of some
objects during program exit. On some systems this caused
one of the unit test programs to crash when it terminated.
(Trac #4494, git 023c2fc3688bcdbccb4b286bea873c8f9c06cd5f)
1153. [func] tomek
Integers can now be used in client classification.
(Trac #4483, git e90cf0ee4007521b86177be6d5fbb970c02c1075)
1152. [doc] marcin
Use of PostgreSQL as a storage for host reservations is now
documented in the Kea Administrator Reference Manual.
(Trac #4282, git f2879919772c10b1ae8c45d0e761ef199cf84061)
1151. [func] tmark
Support for assigning client classes to host reservations has
been added to both the PostgreSQL and MySQL backends.
(Trac #4277, #4213 git 6990ab9d542e984c59ce5a11ff926c3c732a75fc)
1150. [bug] tomek
Extended gcc bug workaround to work on all versions of gcc
from 5.2 up to, but not including 6.0. See !ChangeLog entry
1103 or Trac ticket #4243 for details.
(Trac #4553, git 80243d9d246b982d86dd7e0d00597383cae01706)
1149. [bug] marcin
Corrected a bug whereby clients were not assigned reserved
addresses from an external database, as a result of unexpected
closure of a connection to that database.
(Trac #4544, git 7f682112dd5ab9fcd6bfa4e10505c246775f353d)
1148. [func] tomek
The vendor options (124, 125 in DHCPv4 and 16, 17 in DHCPv6) are
now accessible from client classification.
(Trac #4270, #4271, git ef676368f9036625d73f7f34e3fe9b5eeeaee7f1)
1148. [func] fdupont
Added the pkt classification token to extract incoming packet
meta-data (receiving interface name, source and destination
(Trac #4272, git 9a3bdfa43cf65ef56a8d63580dd5d7414fc41373)
1147. [func] stephen
-Werror is no longer the default for compilation. Promotion of all
compilation warnings to errors now requires the --with-werror switch
to be specified when running configure.
(Trac #4533, git 874e3a3f5cb10313856284646fcee7cf86e4fcce)
1146. [func] sar
Add the forensic hook library documentation to the admin guide.
(Trac #4511, git 0bb39840a3cbdaf815819f846120c90d9ca038ff)
1145. [func] tmark
The Postgresql backend now supports host reservations for both
DHCPv4 and DHCPv6, with options and IPv6 reservations.
(Trac #4277 git ac1eaa1026987c2d86d57b4aa0dc9a4d093787f0)
1144. [bug] mihu
Response to DHCPINFORM is generally sent to port 68, rather
than port 67. Thanks to Michal Humpula for providing a patch.
(github #23, git 4216a4bedf8a884df087c68d48c88ee9ffa444dc)
1143. [doc] fdupont
User's Guide has been updated with DHCPv4-over-DHCPv6 support
(Trac #4273, git fe8cb64adeabe00d84ee390b579a8328717ae521)
1142. [doc] sar
Uncomment the example columns in some rows in the table
listing the classification examples.
(None, git dee442a64f57c8d9dd87636f9e39084ed1b11e03)
1141. [func] marcin
Pkt4, Pkt6 and Pkt4o6 objects passed to hooks libraries
return copies of DHCP options to avoid unintended modification
of the options stored in the server configuration.
(Trac #4497, git e50d2ebe998ec3faad8ade22b6971d6584c81044)
1140. [func] marcin
DHCPv6 server supports assigning multiple reserved addresses
and/or prefixes to a single client.
(Trac #4321, git 0bfb2a9093174e4424051c01beeee7637ac95be0)
1139. [doc] tomek
New features of host reservations have been documented: ability
to reserve standard and vendor options in host reservations. Separate
sections for each backend added.
(Trac #4518, git 99a40fead28f4324dfb55f1962a8bf3e85ab70e2)
1138. [build] fdupont
Compilation problem on FreeBSD caused by unused parameter in
certain version of boost headers is now resolved. Also, INSTALL
file has been updated and now lists dependencies.
(Trac #4283, git 7dbd95651c308527f2e42c533fdc0a12aeec5308)
1137. [doc] fdupont
Developer's Guide has been updated with DHCPv4-over-DHCPv6 support
(Trac #4274, git b3eda594e055f03a9a601bacf0c72c3db0ef8e3c)
1136. [doc] tomek
Included full text of MPL 2.0 and Apache licenses.
(Trac #4529, git baefb4b3e2078a0a0f794b42ef52d6b7d53c9dab)
1135. [func] fdupont
Integrated the DHCPv4 service part of DHCPv4-over-DHCPv6 support.
(Trac #4110, git 7d36aebe14db10b0cbac8e6c0e82160b9d5d7ecd)
1134. [func] fdupont
Integrated the DHCPv6 service part of DHCPv4-over-DHCPv6 support.
(Trac #4109, git 8d1f330d9b0a44039a8b9e0b479f8da1743b9504)
1133. [func] razvan
The initial support for CQL (Cassandra) backend added. It is able
to store leases information.
(Github #21, git d3a412d4b090bfd84ec5bc5d7817b1dfcc92602e)
1132. [func] tmark
The Postgresql schema has been updated to support host
reservations and its version number has been bumped to 3.0.
This schema is content equivalent to the MySQL schema version 4.2.
(Trac #4275, git 6f8e646bee9de22c921ed26409f3d1856ebce9e6)
1131. [func] fdupont
Update the DHCPv4-over-DHCPv6 inter-process communication code.
(Trac #4106, git 1ce1cba00af5d81822d5bbe26ddd28b718f51d54)
1130. [func] marcin
DHCPv6 server assigns DHCP options specified for hosts. Host
specific options take precedence over class specific options,
subnet specific options and global options.
(Trac #3573, git c29551e43010a345cfa2efda46389f4433d84650)
1129. [bug] marcin
libdhcp++: Removed unnecessary copies of the container holding
option definitions to improve performance of both DHCPv4 and
(Trac #4498, git 14716853a92e08c4cc5be75ae85c5e84d6356a1e)
1128. [func] tomek
Subnet selection in DHCPv4 will now work, even if the addresses
configured on interface are not in range of the subnet definition
from the configuration file.
(Trac #4308, git 7c74ecdbb64c69d341d623422216b0a54e6ff519)
1127. [func] marcin
DHCPv4 server assigns DHCP options specified for hosts. Host
specific options take precedence over class specific options,
subnet specific options and global options.
(Trac #3572, git 49f67aaf36dab38b4fcbf59dcad97e4309903b2f)
1126. [func] marcin
Host reservations can be assigned using DHCPv4 client identifier.
(Trac #4317, git 5f14fca1e029b04ad21a417936c2b8889acef10d)
1125. [func] fdupont
Inter-process communication for exchanging packets between
DHCPv4 and DHCPv6 components of DHCPv4-over-DHCPv6 has been
(Trac #4106, git 3223bb8280bfd99c225e725de660ae764abe3c87)
1124. [bug] sar
Update the classification document to match the output from
the debug statements.
(Trac NA, git 8b3ea8e26c3e6cd3c46073b635212fd29f031774)
1123. [func] marcin
Extended MySQL host data source to retrieve DHCPv4 and DHCPv6
options associated with hosts from a MySQL database.
(Trac #4281, git b8a306a27d1cae03f6bc5223c30806f5cd1b64f4)
1122. [func] sar
Add debug logging to the classification tokens. This uses
the loggers "kea-dhcp4.eval" and "kea-dhcp6.eval" to capture
details of the classification expression evaluations.
(Trac #4480, git cf14d0d21c69879f21733457a97a6ac0bdb1dae2)
1121. [func] stephen
Make the database connection timeout a configurable parameter with
a default value of five seconds.
(Trac #3164, git 3332ad17523c6fcc1e735e4297169ebb2de95118)
1120. [bug] marcin
Performance improvement in libdhcp++: improved efficiency of the
DHCPv4 Message Type option creation.
(Trac #4495, git 41c43a2a9e34931fc3ebf58c459f10ad08575d19)
1119. [bug] marcin
Performance improvement in hosts reservation: removed
inefficient conversion of the host identifier to text
(Trac #4499, git 48c20790480d5ed7bfde0ef7b052dd4a9745607d)
1118. [func] tmark
The "query4" argument, containing the client packet received, has been
added to the DHCPv4 hook points: lease4_select and lease4_renew. The
"query6" argument, containing the client packet received, has been
added to the DHCPv6 hook points: lease6_select and pkt6_send.
(Trac #4481, git c0af94c47bda85eb1caa3a78a46280b63990672a)
1117. [bug] stephen
Adjusted variable type in a MySQL-related file to overcome a
type mismatch problem reported by one particular compiler.
(Trac #4485, git 4c6fb189b5d12ffdf4ab171c9154366e70e6082c)
1116. [func] tomek
DHCPv4 subnet selection can now be selected based on IPv6
information. This is part of ongoing effort to support RFC7341:
(Trac #4112, git 3352685981ec8ca9a90f7405ff56cd31af6fb0d9)
1115. [bug] tmark
An explicit call to unload the hook libraries prior to server
exit was added to both kea-dhcp6 and kea-dhcp4. This corrects
an issue where logging components were being destroyed prior
to hook libraries being unloaded.
(Trac #4492, git 2a4792b3551cce2fb9147f33f032ae7e71791d21)
1114. [bug] marcin
perfdhcp: Improved algorithm for dropping timed out transactions.
This prevents growing memory consumption due to storing timed
out transactions when the DHCP server drops many messages.
(Trac #4493, git 9757a93110afb82c5379643f2f48e223d497efae)
1113. [func] tomek
It is now possible to specify parameters for hook libraries.
(Trac #4297, git f45d0b5d297f6ad522eb8b7e6f6a0de1064b8569)
1112. [func] marcin
"host-reservation-identifiers" configuration parameter has been
implemented. It allows for specifying an ordered list of
host identifiers that DHCPv4 and DHCPv6 servers use to
retrieve static host reservations for a client.
(Trac #4303, git 942808400e7116d95acfd53b0dc1ecad1c45c598)
1111. [func] tmark
Schema scripts have been relocated from src/bin/admin/scripts to
src/share/database/scripts and are now shared by both kea-admin
and unit testing.
(Trac #4239, git 131fcf52f2a65cedb53975f99114296366fb0199)
1110. [func] fdupont
Added support for extracting constant length fields from a DHCPv4
(Trac #4268a, git 5d1397efc05802b72e86785528870b7154307ff0)
1109. [func] sar
Added support for accessing DHCPv6 packet fields message type
and transaction id in a classification expression.
(Trac #4269, git 48be5f5ceaba6b0d0a2b31465e8a5904524e894c)
1108. [bug] pallotron
perfdhcp uses the same transaction id throughout the DORA
exchange to adhere with RFC 2131.
(github #19, git d260a70d6aa0baecd68131bc35f58f097aa77bcc)
1107. [func] tmark
The DDNS parameter, replace-client-name, has been changed from a boolean
to list of modes, which provides greater flexibility in when the Kea
servers replace or supply DNS names for clients. This is supported both
kea-dhcp4 and kea-dhcp6.
(Trac #4529, git 45e56d7aa0d4a6224a1a28941f6cb11575391222)
1106. [func] marcin
"circuit-id" can be specified as host identifier in host
host reservations. However, the server ignores the reservations
by "circuit-id" at this point.
(Trac #4301, git cf56fc2a2e0e821a17dd95de49a43755745682fb)
1105. [func] sar
Added access to the peer address, link address and option
information added by relays in a DHCPv6 message.
(Trac #4265, git bb00d9d205ee047961ba70417d7ce02c37d80ce7)
1104. [bug] stephen
Made DHCPSRV_MEMFILE_LFC_UNREGISTER_TIMER_FAILED a debug message as the
condition leading to it (trying to unregister a timer that is not
registered) does not have an adverse effect on the operation of Kea.
(Trac #4293, git 06204c5d347d0df359af69974c155d0fa9725b44)
1103. [bug] tmark
Wrapped asio/asio.hpp with logic to suppress optimization when building
under GCC 5.2.0 through 5.3.1 and BOOST_ERROR_CODE_HEADER only is defined.
This avoids an issue in the asio socket layer that was incorrectly
reporting socket read errors causing unit tests to fail and kea-dhcp-ddns
to loop logger calls in the error handler (aka double errors).
(Trac #4243, git 082f846f37cb32964c876b2bff5fcac82d1eaaf0)
1102. [func] marcin
Updated Host Manager API to allow for retrieving host reservations
by any type of host identifier. Previously it was only possible
to retrieve host reservations by hardware address or DUID.
(Trac #4302, git 3979656c918164e3c39e0e8fb78b2862a2b5e95a)
1101. [func] kalmus, marcin
Implemented IPv6 address/prefix reservations in MySQL.
(Trac #4212, git 79481043935789fc6898d4743bede1606f82eb75)
1100. [func] fdupont
Reorganized the DHCPv4 and DHCPv6 services into run() (service
loop), run_one() (receive, call next routine and send) and
processPacket() (internal core processing of an incoming packet).
(Trac #4108,#4266,#4267, git ba24bd770d1a1791f8fdc3df7f2e41f9f0c851ec)
1099. [func] tmark
Both kea-dhcp4 and kea-dhcp6, now log the primary lease events (e.g.
grants, renewals, releases, declines) at the INFO log level to the
lease4_logger and lease6_logger respectively. Prior to this these
events were logged at the DEBUG log level.
(Trac #4316, git 9beca27e3d76d0ccec925125f23074227db08869)
1098. [bug] fdupont
Fixed some minor Coverity-detected issues.
(Trac #4326, git ad1f442ee4382b354dc8be84ba77785e565aa86b)
1097. [bug] marcin
libdhcpsrv: Fixed issues with lease indexing in Memfile
(Trac #4339, git a065144663ac716b1fa1c8c224a88aa176da9630)
1096. [bug] fdupont
Fixed Coverity-detected overflows in pkt4::setFile() and setName().
(Trac #4306, git 0b7388891eaab39fe727b076468d672551126796)
1095. [func] marcin
DHCP option values can be specified within host reservations
in the configuration file.
(Trac #4319, git 069dd7c248afcfcb7e4d958f20faa32e946e74ce)
1094. [bug] fdupont
Fixed Coverity-detected exception-handling issues.
(Trac #4307, git 3e1050749d9684144e1bd17552af7e4abf3c0d17)
1093. [func] fdupont
Added support for IP address (IPv4 and IPv6) literals in
(Trac #4232, git b98cc019b172a4903a2121e910f3cee4eaca2d51)
1092. [func] fdupont
Added relay4[X].exists method in classifications that checks
whether a sub-option is present in theDHCPv4 RAI (Relay Agent
Information, 82) option.
(Trac #4313, git 87397fd75215b69ad79708aaa1d7505aca299fb5)
1091. [bug] fdupont
Protected DHCP server main() routines against errors raised from
logger calls in the error handler (aka double errors).
(Trac #4310, git 6813e1a7520335f6920ff8de5e52ecdb24712910)
1090. [bug] fdupont
Empty option specifications no longer require setting the
(Trac #4291, git 398458f3ad4680fd5f3c032eb6c99d50c2981368)
1089. [func] marcin
The Host class has been extended to store DHCP options to
be assigned to a client.
(Trac #3571, git 9d434f28cc4683eccbcca1ba0d1e45bceb5230d2)
1088. [bug] sar
Always copy the DHCPv4 flags field from a client's request to the
the server's response.
(Trac #4292, git 8b7182abdc7ff47eb9b68451e7507b7e4b9872e0)
1087. [bug] fdupont
Removed obsolete requirement of python3 by --enable-generate-docs
(Trac #4315, git 2c236316d5fbac9906cf48a6e4df1649e7545e67)
1086. [bug] marcin
When lease-database configuration parameter is not
specified the default lease database backend (memfile)
(Trac #3696, git 0be5e6eb32680a742ddcf427b8181f55c0c98115)
1085. [func] fdupont
The following DHCPv4 options are now supported:
(Trac #4286, git 5ed03ed5ea48334bbd16a9a8e1676f3b4cc730a0)
1084. [bug] jpopelka
Added missing slashed in path_replacer.sh.
(Github #10, git 8986813825623b19fb220534434d0c13785fc14c)
1083. [func] fdupont
Added a concat function in classification which concatenates two
(Trac #4233, git eec10b436b928bd5eb3139c2f98ec9a6a818f30e)
1082. [func] fdupont
Added Not, And and Or logical operators, parentheses around
logical expressions and option[code].exist logical predicate
(to check the presence of an empty option).
(Trac #4231, git 8e01dbe2fe2d8c97f89c20f5bb1d03748a2432e0)
1081. [func] tomek
Client classification in DHCPv4 has been enhanced. It is now
possible to access relay sub-options using the expression
(Trac #4264, git c13791e916ceae9a73ca44005581e0e39385a572)
1080. [func] marcin
perfdhcp now accepts -f option for DHCPv4 server testing, which
enables lease renewals at the specified rate.
(Trac #4254, git 8c5630b9ce6d3fba224f0643a7c69e4f7aaefca7)
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.
© 2001-2016 Internet Systems ConsortiumPlease help us to improve the content of our knowledge base by letting us know below how we can improve this article. If you have a technical question or problem on which you'd like help, please don't submit it here as article feedback. For assistance with problems and questions for which you have not been able to find an answer in our Knowledge Base, we recommend searching our community mailing list archives and/or posting your question there (you will need to register there first for your posts to be accepted). The bind-users and the dhcp-users lists particularly have a long-standing and active membership.ISC relies on the financial support of the community to fund the development of its open source software products. If you would like to support future product evolution and maintenance as well having peace of mind knowing that our team of experts are poised to provide you with individual technical assistance whenever you call upon them, then please consider our Professional Subscription Support services - details can be found on our main website.