= 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 security reasons. * 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 expression. - 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. License Change: Since version 1.0.0 Kea has been released under the Mozilla Public License, version 2.0. https://www.mozilla.org/en-US/MPL/2.0 == Download == The Kea 1.1.0-beta source may be downloaded from: http://ftp.isc.org/isc/kea/1.1.0-beta/kea-1.1.0-beta.tar.gz A PGP signature of the distribution is at http://ftp.isc.org/isc/kea/1.1.0-beta/kea-1.1.0-beta.tar.gz.sha512.asc The signature was generated with the ISC code signing key which is available at https://www.isc.org/about/openpgp 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 http://kea.isc.org/wiki/KeaKnownIssues 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 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 the ticket tracking system at http://kea.isc.org == Changes == The following summarizes changes and important upgrade notes since the previous release (1.0.0). (See the git history for more details and additional development.) 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 address, length). (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 details. (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 details. (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 DHCPv6 server. (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 implemented. (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 when logging. (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: DHCPv4-over-DHCPv6. (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 packet. (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 database backend. (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 classification expressions. (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 csv-format parameter. (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 configuration option. (Trac #4315, git 2c236316d5fbac9906cf48a6e4df1649e7545e67) 1086. [bug] marcin When lease-database configuration parameter is not specified the default lease database backend (memfile) is used. (Trac #3696, git 0be5e6eb32680a742ddcf427b8181f55c0c98115) 1085. [func] fdupont The following DHCPv4 options are now supported: nisplus-domain-name (64), nisplus-servers (65), mobile-ip-home-agent (68), smtp-server (69), pop-server (70), nntp-server (71), www-server (72), finger-server (73), irc-server (74), streettalk-server (75) streettalk-directory-assistance-server (76) (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 strings. (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 relay[123].hex. (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.