Kea 0.9.1 "Beta" Release Notes Welcome to the development "beta" release of the upcoming Kea 0.9.1. Kea is an alternative DHCP implementation being developed by Internet Systems Consortium, Inc. that features fully functional DHCPv4, DHCPv6 and Dynamic DNS servers. Both DHCP servers fully support server discovery, address assignment, renewal, rebinding, release, DNS updates and host reservation. The DHCPv6 server supports prefix delegation. Version 0.9.1 adds the following features to Kea: * Host Reservation - the ability to add static reservations of addresses (DHCPv4 and DHCPv6) and prefixes (DHCPv6) for clients. For DHCPv6 clients, several methods have been provided to extract the client's MAC address from the information it sends to the server. * Support for the DHCPv6 Information-Request message. * The periodic removal of redundant information from the "memfile" backend's lease file. (Prior to this, the file would grow without bound.) * A tool - kea-admin - for administrators to create and update the databases used for the MySQL and PostgreSQL backends. Note: when migrating from Kea 0.9 to 0.9.1: * The JSON-based configuration file needs to be updated. * The MySQL/PostgreSQL lease databases (if used) need to be updated. Download The kea-0.9.1-beta source may be downloaded from: http://ftp.isc.org/isc/kea/0.9.1-beta/kea-0.9.1-beta.tar.gz A PGP signature of the distribution is at http://ftp.isc.org/isc/kea/0.9.1-beta/kea-0.9.1-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). (See the git history for more details and additional development.) 901. [bug] tomek Previously, the DHCPv4 and DHCPv6 servers gave up after 100 failed lease selection attempts. Now both DHCPv4 and DHCPv6 servers calculate the number of attempts required to find a lease using the pool capacity. (Trac #3711, git cb5533a1bf1023faf61c1b8ade6ac8fa425f46c2) 900. [doc] marcin Documented configuration of the Lease File Cleanup (LFC) in the Kea Administrator Reference. (Trac #3672, git da3c676f009785204f9d84ca008890959bffcc18) 899. [func] tomek reservation-mode parameter has been added to DHCPv6 server. It controls what host reservation types are allowed and may improve performance in certain situations. It is also accepted in the DHCPv4 configuration, but currently not used. (Trac #3565, git cfbe13ad05aac23e09357fc78507cf9a82c908e6) 898. [func] marcin The DHCPv4 server configuration allows for opening multiple sockets on a single interface with multiple IPv4 addresses assigned. This facilitates to use case when different relay agents send messages to different addresses on the interface. (Trac #3695, git 3116243706a2dbcae3f9b5b3af9d2241a07b9ab2) 897. [bug] fdupont Removed a double free of the read_buffer_ field of Iface objects after (spurious) copy (partial as copies are not yet fixed). (Trac #3712, git 0b38ff6a6e77eb4182bfd7c0c681bef22ad5f634) 896. [bug] fdupont Removed exit() in D2 for version command line processing. This interfered with how the unit-tests were run. (Trac #3616, git 758a61e277675e89d857a22c3f8e844de307dca6) 895. [doc] tomek Host reservation for DHCPv4 and DHCPv6 is now documented. (Trac #3575, git a981e42eb0f39d27795364a6862b3a5e574e540a) 894. [bug] fdupont Accept empty options or sub options in DHCPv4 messages unpacking routines. (Trac #3661, git 42a4854208ec16834c590a9316b9a5306c60a3bb) 893. [func,bug] fdupont Changed the qualifying-suffix parameter in the dhcp-ddns configuration element to be mandatory with no default value when updates are enabled (i.e., the enable-updates mandatory parameter is true). (Trac #3632, git 12808651448837c611e4f6a262f7a1eb3deaf8da) 892. [func] sar A class, LeaseFileStats, has been added to provide simple statistics for use with lease files. Also added logging to the kea-lfc process per the design. See http://kea.isc.org/wiki/LFCDesign for the design. (Trac #3667, git 7f36e034fe79d85f317d7d07e2fe636d6cdf1f6e) 891. [func] tomek libdhcpsrv: Allocation Engine now uses statically assigned addresses when processing DHCPv6 renewals. (Trac #3677, git 9ce50790c91624937ff2b622e4afff36d5d3cc2d) 890. [func] marcin It is now possible to specify whether the DHCPv4 server should use raw sockets or IP/UDP datagram sockets to receive and send DHCP messages. The configuration format has been changed for the selection of interfaces on which the DHCPv4 and DHCPv6 servers should listen. The configuration files using an old format are incompatible with the latest version of Kea. (Trac #3604, git c726bbc4eae0f576f6791c7490bfba8c30a401d9) 889. [bug] marcin Resolved a bug in the DHCPv4 allocation engine whereby the client could request and obtain an address reserved for another client. (Trac #3690, git 1afa4e24b0fcdd6d3a2e596663ce1102ffe2340d) 888. [func] marcin DHCPv4 and DHCPv6 servers launch the kea-lfc program, according to the value of lfc-interval configuration parameter for the Memfile lease database backend. (Trac #3669, git c92665ce05d71e9e5cad9a0679018e9e3f7e3be5) 887. [func] sar A new process, kea-lfc, has been added. It is meant to be periodically executed by the DHCPv4 and DHCPv6 servers to remove redundant information from the lease files. See http://kea.isc.org/wiki/LFCDesign for the design. (Trac #3664, git cc85938b35e2d4bd00ccb74f1b83d3017ab0e41b) (Trac #3665, git b1707981f48b13895b50bf27176dede866576292) (Trac #3687, git 1e92382aaa2fbff08bbf1d6bbf0add195a7b6fae) 886. [func] tomek libdhcpsrv: Allocation Engine now uses statically assigned addresses when it allocates leases for the DHCPv6 clients. (Trac #3563, git b86b24fd011c0617515d62b7091d56fdfd1a7360) 885. [func] tomek Information-Request (stateless mode) in DHCPv6 is now supported. (Trac #2949, git 3185d229c39ed4660e9bc98a7f4a9d0dfbe64a04) 884. [func] marcin The DHCPv6 server configuration now allows for defining a pool for prefix delegation in which prefixes do not match a subnet prefix. (Trac #3647, git 5455d96cbf773e678bd6b1c3e31bfdeb617e6c13) 883. [bug] marcin libdhcpsrv: Prevent infinite loops in the allocation engine, when the address pool becomes exhausted. (Trac #3692, git f1e464558c89a6dc88ab28a25dd14a65fee62578) 882. [func] sar A utility class has been added which handles writing and deleting pid files as well as checking if the process with the given pid is running. (Trac #3687, git 1e92382aaa2fbff08bbf1d6bbf0add195a7b6fae) 881. [func] kalmus Extracting hardware/MAC address from the DHCPv6 remote-id option is now implemented. (Trac #3552, git 6db5fc158133b3f308c43f1fe2fa54a6f89baae1) 880. [doc] tomek kea-admin is now described in Kea User's Guide. (Trac #3644, git fa83c48826e41663d93e56ec7fd6983e9b0b2cd1) 879. [bug] fdupont Drop DHCPREQUEST message from an unknown client in the INIT-REBOOT state. (Trac #3656, git 8e205adc35d8e72d1802d5ee9056e6c4ac78274a) 878. [func] marcin DHCPv4 and DHCPv6 server now support the lfc-interval parameter which configures the interval in which the Memfile lease database backend executes the Lease File Cleanup (LFC). Note: the LFC is currently no-op and will be implemented shortly. (Trac #3668, git 2ce54eeb607d2caa0901125b5d86a373e9e3f165) 877. [func] marcin DHCPv4 server drops unicast packets sent to the IPv4 address on which the server is not configured to listen. (Trac #3547, git 803f1f0f145b0f252ffc3637f758a47e0061de85) 876. [func] tomek Two new MAC acquisition methods implemented for DHCPv6: docsis-modem (which extracts MAC address from an option inserted by a cable modem) and docsis-ctms (which extracts MAC address from an option inserted by CMTS which acts as a DHCPv6 relay agent). (Trac #3553, git ad0a3772774bc5f9831a5ba16725a5a22887b8cb) 875. [bug] afidalgo, marcin The DHCPv4 server no longer appends the trailing dot to the hostnames sent to the clients in the Hostname option (12). Appending trailing dot confused some DHCPv4 clients. Credits to Alexis Fidalgo for submitting a patch. (Trac #3636, git 450867e6987f4c786ad6c2cc95cabcff601c1b48) 874. [func] marcin Changes to the Memfile lease database backend to load leases from multiple files during startup or server reconfiguration. This change is required by the Lease File Cleanup feature, which leads to the creation of additional files holding cleaned up lease information. (Trac #3671, git 667de2ef9044e97c76b15cacc7285132cdffdfcf) 873. [bug] wlodek Removed references to non-existing pgsql_test.sh script from Makefile. (Trac #3662, git ab69f38dd82cf3c3736588e03c1dc568de3ae6d6) 872. [func] wlodek Check for required header file errcode.h for PostgreSQL backend added to configure process. (Trac #3663, git d666dd9263ba1aaf88bec5b8e5ae3f0cb8e5c1db) 871. [func] kalmus, tomek DHCPv6 is now able to extract MAC from DUID-LLT and DUID-LL. (Trac #3548, git f6d9630e2762a0f256a2b7825d74d2bce8fe4c60) 870. [func] fdupont Cleanup the cryptolink API (e.g., removing spurious 'magic' zero length parameters). (Trac #3606, git 55d2df9d78321b3844217055e376ae44ac962d8f) 869. [func] tomek 'mac-sources' configuration parameter added. The DHCPv6 server can now be configured to use various MAC/Hardware address sources. (Trac #3554, git 2e7c32e7c19372f0c97968ef7c8256509d80fdfc) 868. [func] marcin DHCPv4 server configuration allows for selection of the address on the interface that server should listen on. This is specifically useful in the environments with multiple IPv4 addresses assigned to one interface. (Trac #3539, git ff71887c605eedc3914bacfd2e551da7bddcc0d6) 867. [func] marcin libdhcpsrv: Allocation Engine uses statically assigned addresses when it allocates or renews leases for the DHCPv4 clients. (Trac #3564, git 7b192fe314c12e38622742b3b338e997934f862f) 866. [doc] stephen Corrected documentation concerning the way to configure hooks libraries. (Trac #3635, git 42d1c98a2e66ab7fc3e372365edad1f5709df885) 865. [func] marcin Host reservations can be specified in the DHCPv4 and DHCPv6 servers configuration. The reservations are loaded, but they are currently unused. (Trac #3562, git 1ba5ec3b7831ef8126be17b9542d9b89a419e7dd) (Trac #3628, git 00b49298ec5e5e5c722e5938547c86c954fc76e1) 864. [func] tomek MySQL backend is now able to store information about hardware addresses and associated information in DHCPv6. (Trac #3556, git 08a29d8d2374bc3c6b3799d5dd97f586ee869392) 863. [func] tomek A new tool called kea-admin added. It allows database maintenance. Initialization of a new database, version check and upgrade between version is now supported. Currently the only backend supported is mysql, but support for memfile and pgsql is planned. (Trac #3599, git cf22f8d212f2435957f89b51722f8e26e14635f2) 862. [func] dgutier, tomek Support for client link-layer address option (RFC6939) has been added. (Trac #3551, git dabdf965d92085f86d5e96c8dadce0f0a8f7c8e3) 861. [func] marcin The configuration parameters for a DHCPv4 and DHCPv6 options are now optional. (Trac #3467, git 7bf8cef161e6dd00a7f2b2fe8ec04e1958d6db3f) 860. [bug] marcin Fixed calculation of the Client FQDN option length for the ASCII domain name encoding. (Trac #3624, git 5a120d9bf85e27ea5b2674d35af0f2774e4cd2a7) 859. [func] marcin Implemented Host Manager, which can retrieve host reservations specified in the server's configuration. Future tickets will extend Host Manager to retrieve reservations from other sources, e.g. SQL databases. (Trac #3561, git faac5e9746dbf82eb04ffef95658e4b4c7d64a4a) 858. [bug] marcin Added missing "lease-database" entry to the default DHCPv6 server configuration, in kea.conf. (Trac #3630, git 0f7ff732ea2add45a24e040eae8a0dda27532a31) 857. [func] fdupont Improve the cryptolink code, for instance use a constant time comparison. (Trac #3602, git 0c1f433da650330b40fe1a67bae4716c9184f636) 856. [build] marcinw callout_manager.h and server_hooks.h headers are now exported, so statically linked libraries can be tested. (Github #4, git 00b5f3fa0369c13021bf4fb78c6450e524e4e411) 855. [build] fdupont Use convenience archives for objects used in a makefile and its parent makefile: before sources were compiled twice using the broken subdir-objects option of automake, now objects are put into a convenience static library (so an archive). (Trac #3631, git d7954b4234114d8fa41aa51f671d4faa1724b748) 854. [bug] marcin Corrected a regression on "make distcheck" which appeared after implementation of #3162 (partial fix). (Trac #3629, git 9bb6b76a24e4356b30e59631e76e32c3096fb515) 853. [func] tomek Lease6 now is able to store MAC/hardware address information. Memfile memfile backend has been updated to store/retrieve that additional piece of information. Server now tries to use available methods to obtain MAC/hardware address from incoming packet. (Trac #3555, git ab76a9e7a9d39cb3cf533729473b63a2d2401ac7) 852. [func] tomek Pkt6 class is now able to generate client's MAC from source IPv6 link-local address if EUI-64 identifier was used. (Trac #3549, git d92e76860e6931477b3e60e5be8978302973f88f) 851. [bug] tmark Corrected a segmentation fault that was occurring under OS-X during D2 module shutdown. (Trac #3470, git f7822568abd04c12faa3cde34fadaac238a373d3) 850. [build] fdupont Moved optional gtest sources to ext/gtest. (Trac #3162, git 055512758f5c79f29eb375126d496483c9a6d0a1) 849. [bug] tomek DHCPv6 component now processes incoming vendor-class options properly (packets are classified as VENDOR_CLASS_[content of the vendor-class option]). (Trac #3486, git 62409cd9531b081943b8f3567f7b0dca36b18802) 848. [func] fdupont Added truncated HMAC support to TSIG, as per RFC 4635. (Trac #3593, git ae3a9cd1a0d2dc07b7092368149381d69bc2c61a) 847. [build] fdupont Removed no longer used configuration option --with-shared-memory and associated files and variables. (Trac #3614, git adee8c93f7c7c1303390dd63dbeae74a48a34845) 846. [bug] fdupont Fixed subdir-objects warnings from recent versions of autotools, e.g., on Apple OSX. (Trac #3162, git e25c7477f3c35cdaa0f038732f697224bfd44847) 845. [func] marcin Implemented Host class for storing information about IPv4 and IPv6 reservations for the host. (Trac #3560, git fb5e1883b01ce6388d1b7a92c61061b493c36713) 844. [bug] tmark, marcin Fixed multiple issues in the DHCP-DDNS unit tests. (Trac #3615, git fec824d36121b12e98dd407a0bdf1bc71c8de18d) 843. [bug] marcin DHCPv4 server sets ciaddr to 0 in DHCPOFFER and DHCPNAK messages to adhere to section 4.3.1 of RFC2131. (Trac #3367, git 9f05a29caa960df2b09b7a8c23100da8b40e73d0) 842. [func] marcin DHCPv4 server logs when the packet sent by the client contains invalid combination of giaddr/hops before discarding the packet. (Trac #3537, git 760c652b54dcdfdfbd1a0014da43d3c31e848f02) 841. [func] tomek Pkt4 and Pkt6 class have a common base now. A lot code duplication removed. Added getMAC() method that will be used to extract MAC in DHCPv6. (Trac #3546, git 6e68af7dfe15e4d461bf068f545d2bdaaa8fcfb0) 840. [func] nicolas PktFilterInet::send method now sets source IPv4 address explicitly. This enabled perfdhcp to control its source address on systems that have more than one address assigned to a given interface. Thanks to Nicolas Chaigneau from Capgemini for providing this fix. (Github #2, git 6ac36ed7a1d97bcf52ffb2aec7cbf116e58e5803) 839. [doc] adam DHCPv4 examples corrected in Kea ARM. Thanks to Adam Osuchowski from Silesian University of Technology for providing this fix. (Github #1, git 15785c0e28190659b037cfcca19f0267ccd9049f) 838. [bug] tomek Kea components now use the KEA_LOCKFILE_DIR environment variable to specify the directory of the logging lockfile. Locking can be disabled completely by setting the variable to 'none'. (Trac #3591, git d4556e1d21766b94f2f0cda59df15e47e6f2676e) 837. [bug,doc] tomek Logging configuration examples in kea.conf fixed. Also updated Kea documentation for logging. (Trac #3536, git 2cf3f6b9cb3d2ae6fc7b0940b55490f109ddd2f9) 836. [bug] fdupont Moved duplicated getXXXHashAlgorithm() function to new xxx_common.h include files in the cryptolink library. (Trac #3471, git 8cf2ee46b3d7398f4f716435be3d9b19bf3599f5) 835. [build] fdupont The configure script checks if OpenSSL supports SHA-2, in order to avoid very old (and likely subject to unfixed security bugs) OpenSSL versions. (Trac #3482, git c779a0ef23d2092cf896276dab1fbcb190380374) 834. [bug] marcin Corrected the definition of the example DHCPv4 and DHCPv6 address pools in the default kea.conf file. (Trac #3538, git 8712cc0df77368940d8d3d11811a9ac9504bce12) 833. [func] marcin Configuration Manager supports two stage configuration. In the first stage a temporary configuration is created and in the second stage this configuration is committed. If configuration fails at the first stage, the temporary configuration is rolled back and the server continues to use the old configuration. (Trac #3534, git 4ecee3c0c97fe417b050317356f9093ba3771a15) 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.