= Kea 1.0.0-beta, 8 December 2015, Release Notes = Welcome to the 1.0.0-beta release of Kea. Kea is an alternative DHCP implementation being developed by Internet Systems Consortium, Inc. that features fully functional DHCPv4, DHCPv6 and Dynamic DNS updates. Both DHCP servers fully support server discovery, address assignment, renewal, rebinding, release, DNS updates and host reservation. The DHCPv6 server supports prefix delegation. Version 1.0.0-beta adds the following features to Kea: * Lease expiration. Configurable mechanism gives the ability to properly clean up expired leases, including logging, DNS cleanup and hooks. * Client classification. Initial support for client classification. * Decline support in both DHCPv4 and DHCPv6. * New statistics. Several new statistics have been added. They can be used to monitor lease expiration and decline processing. * PXE boot. Several new DHCPv4 and DHCPv6 options useful for PXE and iPXE boot are now supported. * Host Reservations in MySQL. Now Kea is able to store host reservations in its configuration file and MySQL database. This functionality works in DHCPv4, but does not work in DHCPv6. There is a work in progress to address this limitation. Note: when migrating from Kea 0.9.2 to 1.0.0: * Incompatible configuration changes in DDNS, details are in the Administrator Guide. * Incompatible change in hooks configuration, details are in the Administrator Guide. * RFC 7550 fully supported. We are planning to release a second beta prior to the final release, having found some new bugs too late to fix them in this first beta without delaying it. We decided to release this code on time with the newly-found defects still present because we anticipate that Kea testers would prefer to start running tests specific to their DHCP environments using new 1.0.0 features as early as possible. The planned second beta's bug fixes do not change ISC Kea's basic feature set or functionality. ISC does not recommend deploying beta versions of ISC code in business-critical production environments. Important license change in upcoming release: With the final release of Kea 1.0, ISC is planning to change the open-source license under which it is distributed. Kea is currently licensed under the ISC license, and with the release of version 1.0, it will be licensed under the Mozilla Public License 2.0. The new license is slightly more restrictive than the original ISC license. If you are planning to redistribute Kea, please review the terms of the new license. For more details about why we are making this change, see the blog posting https://www.isc.org/blogs/kea-license-2-0/ The ISC license: https://www.isc.org/downloads/software-support-policy/isc-license/ The MPL 2.0 license: https://www.mozilla.org/en-US/MPL/2.0/ An excellent FAQ about the MPL2.0: https://www.mozilla.org/en-US/MPL/2.0/FAQ/ == Download == The kea-1.0.0-beta source may be downloaded from: http://ftp.isc.org/isc/kea/1.0.0-beta/kea-1.0.0-beta.tar.gz A PGP signature of the distribution is at http://ftp.isc.org/isc/kea/1.0.0-beta/kea-1.0.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 Kea provides detailed documentation, including installation instructions and usage tutorials. In addition, all logging messages have unique documented explanations. This documentation is included with the installation or via http://kea.isc.org/docs/ in HTML, plain text, or PDF formats. We also maintain a public open source code tree and wiki pages with roadmap and issue tracking at http://kea.isc.org/. Limitations and known issues with this DHCP 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 will be available when Kea reaches Release 1.0. 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 or to the Kea Jabber room. 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 (0.9.2). (See the git history for more details and additional development.) 1067. [doc] sar Remove description of option[xx].text operator from classification until its use becomes clearer. (Trac #4218, git 22fe2bf889984078cd86c2a230a038632d21432c) 1066. [func] tomek Configuration parameters for setting up external hosts storage are now implemented. This feature is considered experimental for DHCPv4 and currently not really usable for DHCPv6. (Trac #3569, git 8896c9c3f77a7836d67e6c33943ac4892b851213) 1065. [func] fdupont,tomek The DHCPv4 server now stores Relay Agent Information option as the last one. (trac #4121, git 2f883d4afb9b27c6c59d993692370685b206b6c2) 1064. [doc] tmark Added Kea logo to documentation. (trac #3702, git 7cae813ffe9a7320db5c84ac4beb1c3c0ecabbf7) 1063. [func] marcin It is possible to disable writing generated DHCPv6 server identifier in a persistent storage. This also fixes a failing distcheck. (trac #4211, git d8f39b7aff9312237d4b6d6de39a7336a25ead4c) 1062. [func] marcin libeval: options may be referenced by their names in expressions used for client classification. (Trac #4204 git 38aebe9566e09daa30796df686cfdd6d0c43fa4d) 1061. [func] kalmus MySqlHostDataSource class implementation. It provides methods for adding and extracting Host objects to and from MySQL database. (Trac #3682, git 275b40fb941a6934c6434715184ae1c39f3fb3f2) 1060. [func] stephen Incremented KEA_HOOKS_VERSION to 3 for Kea 1.0. (Trac #4208, git bf6f3d495604942a395b51bbe4c37001b7541242) 1059. [func] nicolas The client packet is now passed as a new parameter "query4" to the pkt4_send hook point. Thanks to Nicolas Chaigneau from Capgemini for providing this patch. (Github #8, git ) 1058. [func] tomek Two new hook points lease4_recover and lease6_recover have been implemented. They are called when a declined IPv4 or IPv6 lease concludes its probation period and is being recovered into usable state. (Trac #3988, 3989, git 1930797c48fee7f4006a33cecd6f08b05ae76725) 1057. [func] marcin It is now possible to specify type and value of a DUID used as DHCPv6 server identifier. (trac #3874, git faf52b069cf774d0050d76b4f47b542b2b5105f2) 1056. [doc] sar Added description of the expression based classification system to the Kea Admin Guide. (Trac #4101, git 3ec88e0669470ab406c45d50d0f853f9aeb3bf04) 1055. [func] fdupont Classify match expressions are evaluated on incoming packets and requested options are appended when configured by the subnet, a class or globally. (Trac #4097, git 752ad11ff4ebe97ec27d098aff706d1999900346) 1054. [func] tmark Replaced underscores, "_", with hyphens "-", in the parameter names used in the kea-ddns server's configuration as well as those in the DDNS messages (NCRs) sent to the server. For example, "ip_address" is now "ip-address", "change_type" is now "change-type". This makes JSON element naming consistent throughout Kea. (Trac #4202, git 91bf527662060d4b1e294cd53e79b431edf0e910) 1053. [doc] tomek Support for DHCPDECLINE (v4) and DECLINE (v6) messages is now described in the Kea User's Guide. (Trac #3990, git 6b0db91610420f3cce55d9f887d7c73660ece209) 1052. [func] marcin libeval: expressions involving options can now use textual or hexadecimal format of the options. (Trac #4093, git 4cdf0fff1067b3dde6570dc6831e8b1343bc50fe) 1051. [func] tmark kea-dhcp4 and kea-dhcp6 configuration parsing now supports the "client-classes" element for defining client classes. (Trac #4096, git d21fd6925983eb20f82029e3866652398ea5e5fe) 1050. [doc] tmark Corrected the descriptions of ncr-protocol and ncr-format parameters in the Kea Admin Guide. (Trac #4117, git 034c1c95b57768d5abbc7fb40cc57d7cadad21dd) 1049. [build] fdupont Add a new --enable-generate-parser configuration parameter (disabled by default) which makes flex and bison to regenerate parser files. (trac #4125, git 18321bf85f93b24d720f1ab2d90b4f4da85bc471) 1048. [func] fdupont,tomek Implement expression parser for client classification. (Trac #4088, git ac9eb312bfd1c6bf22a868ad789a0c049f33f637) 1047. [func]* stephen Change the way that hooks libraries are defined in the configuration file in preparation for allowing the specification of library-specific parameters in a future version of Kea. (Trac #3259, git b2986b0b0299e691b13123922129bdbf8575afdb) 1046. [func] tmark Upon startup Kea servers will now detect memfile lease files that need upgrading, and will launch in instance of the LFC to convert them to the most current memfile schema version. (Trac #3601, git ce4b0e42e8a01bbf3b58fdb1f505bbd6e2fad134) 1045. [func] tmark Added classes for storing client class definitions to libdhcpsrv. (Trac #4095, git 1039a942450e2a45a1e1aa9924cae4fdbd1541fe) 1044. [build] fdupont With the addition of a background thread for timeouts, ensure that the configuration and process spawning code are thread safe. (Trac #4060, git 4c130bd7c8d0eb97966e9821bab491bca5321b6c) 1043. [func] fdupont Implemented support for hex strings in client classification. (Trac #4091, git 406153af95404adb96296df09ec6033b484586e3) 1042. [doc] fdupont User Guide: parameters having default values may be omitted in the option definitions. (Trac #3927, git c7460e849258ec77cf1215a2baf840d98f1ab77b) 1041. [func] tomek A new library, libkea-eval has been added. It is not functional yet, but its purpose is to provide a generic expression evaluations that will be used in the upcoming client classification. (Trac #4081, git 28d818a26a5d128e8a51d62b68c0cc817e6e2415) 1040. [func] tmark When kea servers lose connectivity with MySQL or PostgreSQL backends they will log an error message and exit with an exit value of 255. (Trac #3780, git cf94e99698e1d8a1613026bda5e4fc9bb4a68d74) 1039. [doc] marcin Configuration parameters pertaining to processing expired leases by the DHCPv4 and DHCPv6 server have been documented. (Trac #3979, git a2ee99ba313e54a9dcf8a09ed118dbfe612e3d55) 1038. [func]* marcin DHCPv4 and DHCPv6 servers reclaim expired leases before they are re-assigned. (Trac #3977, git 5880e706cb27c19b1b70296ccd8d96e38e82027b) 1037. [func] fdupont Added a new 'leases-reclaim' command which reclaims expired leases immediately. (Trac #3978, git 9d5716e5bd6b151d90591f8497bae689321875c2) 1036. [func] tmark kea-admin now supports upgrading from Postgres schema version 1.0 to 2.0. Schema 2.0 includes support for lease expiration and reclamation. (Trac #3969, git 8fde70c1b63b5a2646688290b1d0cf53f4c964ad) 1035. [doc] fdupont Modified documentation of DHCP options to show internal format of records. (Trac #4071, git c5cffe74ac1bd38e4870ff1c22c36febb46e8c27)) 1034. [func] fdupont Add support for DHCPv4 subnet selection option. (Trac #4058, git b7072884e8ce74dc64cd74e101d81e5c0763f492) 1033. [bug] stephen Updated OutputBuffer class to address warnings from Coverity. (Trac #3443, git 4bf0a14aa7a1303ed6959127c5354687e9f222ba) 1032. [func] marcin PostgreSQL lease database backend has been extended with new functions to obtain expired leases and to delete expired reclaimed leases. (Trac #3968, git 0bc02588d8553ba9a4fc749115a3e370407d7287) 1031. [build] fdupont Rewrote the system_messages tool from Python to C++. (Trac #3516, git a8195310c641027d1822344cafad64e6f695d614) 1030. [bug] marcin Fixed failing 'reclaimExpiredLeasesTimeout' unit tests on some virtual machines. (Trac #4075, git c3a2487f53ecf69edc0a38f574fce17c4332162c) 1029. [func] tomek A new hook point lease6_decline has been added. It is called when the DHCPv6 server is about to decline a lease as a result of processing incoming DECLINE message. (Trac #3986, git b6e3f1bbe3595aeba769d627d571e2eeee38a397) 1028. [func] marcin Expired leases are processed periodically according to the server configuration. (Trac #3975, git 3bd8891c0b9cb7dc504fa69251610996775cefbf) 1027. [func] tomek Expired declined IPv6 leases can now be reclaimed (returned to the available pool) after probation period elapses. (Trac #3985, git 9aadfa902d898ce1f52b773152a5b34519a9a9fe) 1026. [doc] stephen Added documentation for the kea-dhcp4.commands and kea-dhcp6.commands loggers. (Trac #3952, git 3eb5d3185683e05494c1d84ed7195627fce4b6c1) 1025. [func] tomek A new hook point lease4_decline has been added. It is called when the DHCPv4 server is about to decline a lease as a result of processing incoming DHCPDECLINE message. (Trac #3986, git 39bde93fe25e4aff52623d4df7fd55c64e0a9c21) 1024. [func]* tomek Boolean Skip flag in Hooks API has been replaced by enum status. This is backward incompatible change if you developed hook library that takes advantage of the skip flag. See Hooks Developer Guide for easy steps necessary for migration. (Trac #3499, git 99ca398d4d042a098b5c491368733220db8cdd08) 1023. [func] tmark kea-admin now supports upgrading from MySQL schema version 3.0 to 4.0. In addition, the lease6 data dump now contains the text label for lease_hwaddr_source column rather than its numeric value. (Trac #3967, git 2e13ac3b0b278faabe338b00ffee8259c13f5342) 1022. [func] fdupont Added support for the V4 link selection sub-option (RFC 3527). If present in an incoming packet, the server will allocate an address in the subnet identified in the option. If this is impossible, no address will be allocated and the request refused. (Trac #4057, git 8c02cec5ec8e311a9d23fd582d8e9e8647667abb) 1021. [bug] stephen Added missing address parameter to ALLOC_ENGINE_V4_REQUEST_OUT_OF_POOL message. (Trac #3996, git 680233550747209a1707e8f920179479b980aa2a) 1020. [func] kalmus A general purpose base class for MySQL connection has been implemented. (Trac #3681, git 884d8bb4a55d3d7b1b8f3f01efb312bd8dec399b) 1019. [func] marcin Added new configuration parameters controlling processing of the expired leases in the DHCPv4 and DHCPv6 server. (Trac #3974, git c998d36c40cc46ffe9f888e615bbcfa0a311d40d) 1018. [func] sar Added support for several options for use by PXE. From RFC4578 (for DHCPv4) these are: 93 - client-system, 94 - client-ndi, 97 - uuid-guid. From RFC5970 (for DHCPv6) these are: 59 - bootfile-url, 60 - bootfile-param, 61 - client-arch-type, 62 - nii. (Trac #3576, git fdcc73afe7e26bd427817fd771567b1c44713b06) 1017. [func] tmark Lease dump SQL logic, used by kea-admin, is now supplied via stored procedures rather than external text files. Files of the form lease_dump_.sh will no longer be installed under /share/kea/scripts. (Trac #3916, git 09cdd86a5e284250d7657a93a36df2e2705947d2) 1016. [bug] fdupont Fixed problems when --enable-static-link is specified as a "configure" option. With this switch present, all Kea executables (servers, tools, unit tests, etc) are linked to the static (vs. shared) version of Kea libraries. However, note that they can still be linked to dynamic system libraries. (Trac #4004, git 760a343efbd241f5ed333cfff088124378f69115) 1015. [func] tomek Expired declined leases can now be reclaimed (returned to the available pool) after probation period elapses. (Trac #3984, #3976, git 32a8ec68e0e5ea93991915812158d7628d2b4709) 1014. [func] marcin Implemented lease4_expire and lease6_expire hooks in libdhcpsrv. (Trac #3972, git 8a8547aec1caf2a8d1c7ca206f68534f3c03f1d9) 1013. [func] marcin New mechanism for scheduling lease file cleanup is used in the DHCPv4 and DHCPv6 servers. (Trac #3971, git 431d515fc3d64aa82369c8eaf48d03339f12dc69) 1012. [bug] stephen Replace #include of message_dictionary.h in message_initializer.h with a declaration of the MessageDictionary class, avoiding the need to include message_dictionary.h in the set of header files installed. (Trac #4046, git 9f1801b4326f62632a7c9f0aa939d58f120c10e8) 1011. [func] fdupont Added definitions and tests for the options from secure DHCPv6. This protocol is still experimental. The option and other protocol codes are for testing, they will be updated when IANA assigns official values. (Trac #4015, git 95f8c0d0af45807c1f303b9bbbb08f82b3bfc343) 1010. [bug] tmark Fixed test failures occurring for some tests after IfaceMgr::closeSockets was called. (Trac #4067, git 9161867dc6a354659ae8b5115ee437ec76c1771e) 1009. [bug] fdupont Now libutil blocks all signals when creating a new thread (so signals are delivered only to the main thread). (Trac #4065, git a4a8e422e613e4378f0a0641e4c480b73d67ebeb) 1008. [build] fdupont Removed the included header-only ASIO code. Kea is now built against the installed copy of Boost. The build by default attempts to use the header-only error code (ASIO dependency), but may also use the version in the boost system library. The location of this library can be specified. (Trac #4009, git 8c293bc0d1804a512964621f114e64fcba0abcb9) 1007. [func] tomek DECLINE message in DHCPv6 is now supported. The server is able to receive it, check its correctness and move the lease to DECLINED state. Currently there is no way to recover the lease before 'decline-probation-period' time. (Trac #3982, git 11e2c4366d8624601172c01e95cff6a8b95833b3) 1006. [bug] marcin Fixed issues with threads concurrency in the TimerMgr. (Trac #4047, git 48297af6e0443808a482536b61436a42bc6a5b38) 1005. [func] tomek DHCPDECLINE message in DHCPv4 is now supported. The server is able to receive it, check its correctness and move the lease to DECLINED state. Currently there is no way to recover the lease before 'decline-probation-period' time. (Trac #3981, git c14a63c0d3a56ea3e880e874f854adc0077de75e) 1004. [bug] fdupont Incoming Confirm, Rebind and Information-Request messages are now more thoroughly checked against presence of client-id and server-id options. (Trac #3773, git fd2889b9de45e2822b6713663bee06b75259c6dc) 1003. [build] fdupont Updated Makefiles to ensure that all required dynamic libraries are included in the link command line as some systems are unable handle implied library dependencies. (Trac #3911, git 4d13f5234da33df03c0989829a0e1c1056e53a4e) 1002. [func] marcin MySQL lease database backend has been extended with new functions to obtain expired leases and to delete expired reclaimed leases. (Trac #3966, git 419832a6279c70b5db04b1cab10737e31f2c99f9) 1001. [build] fdupont Fixed critical C++ issues in the Kea code. This does not cover auto_ptr warnings (just ignore them) or the gtest 1.7.0 bug with EXPECT_TRUE() and ASSERT_TRUE() macros (we recommend to download last subversion sources at http://googletest.googlecode.com/svn/trunk and use the --with-gtest-source configuration argument when you'd like to build unit tests). (Trac #4024, git 55afd98fead0c16bb81107dfc1a5f49a5e295aa6) 1000. [func] marcin Implemented Timer Manager which holds the pool of interval timers used by the DHCP servers. (Trac #3970, git bc8503055338da36d07a2b67c64087f645c9a9e3) 999. [func]* tmark The DHCPv4 server will now honor DHCPRELEASEs for leased addresses which cannot be matched to subnet. This allows leases to be released after configuration changes have eliminated their subnet. Prior to this the server would reject the release and emit a DHCP4_RELEASE_FAIL_NO_SUBNET log message. (Trac #2615, git eeebf9f68cf5be6a0f7eefc78832d664361c4990) 998. [func] tomek 'decline-probation-period' parameter has been added to DHCPv4 and DHCPv6 configuration. It can be configured, but is not yet used, as the DECLINE message support is still pending implementation. (Trac #3983, git 6b10d119c89685476335f268181c9982f6fa6161) 997. [build] jreed Removed obsolete Python coverage build options. (Trac #3483, git a08cbbecbd3b11d0b73f68a40986a353b22ed3be) 996. [func] marcin Memfile lease database backend has been extended with new functions to obtain expired leases and to delete expired reclaimed leases. (Trac #3965, git dd5b95453528416f22e961e6ebb3051bc2ae788c) 995. [build] fdupont Removed additional files left over from BIND 10 (headers, src/lib/{asiodns,testutils,asiolink}). (Trac #40{28,29,31}, git 78ff0fb0a97731a8b3c055b1cbb4faebcd115f7c) 994. [func]* marcin DHCPv6 server fully supports RFC 7550. (Trac #3947, git c06ab97a4e068c4b4b11f4685c56dd402b2385dc) 993. [bug] fdupont The logging spec file was searched in the build tree when it was in the source tree so distcheck (where they differ) failed. (Trac #4026, git 5eb213647d7ac0a707530d57af2c6dbd725ac1b3) 992. [func] fdupont A 'flush' parameter has been added to logging configuration. It is now possible to disable automatic immediate flushing to achieve better logging performance. (Trac #3752, git 16c4c2b6d95c45864ec3e2b27e0d320e386b2c0b) 991. [build] fdupont Removed partial function template ordering macros to allow Kea to build with Boost 1.59 and later. Also removed some compiler-dependent code. (Trac #4006, git e06934f211436eea37439128ff6f388709f01101) 990. [bug] tomek Improved child process signal handling. Improved number of exception handling routines in DHCPv4 and DHCPv6. (Trac #4000, git bf5e48f2cf80b5263cc89f445795bc8c5b8f011d) 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.