= Kea 1.3.0-beta, September 29 2017, Release Notes = 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 award. * 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 2.0. https://www.mozilla.org/en-US/MPL/2.0 == Download == The Kea 1.3.0-beta source may be downloaded from: http://ftp.isc.org/isc/kea/1.3.0-beta/kea-1.3.0-beta.tar.gz A PGP signature of the distribution is at http://ftp.isc.org/isc/kea/1.3.0-beta/kea-1.3.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.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 processed. (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 DHCP4_BUFFER_WAIT, DHCP4_BUFFER_WAIT_INTERRUPTED, DHCP6_BUFFER_WAIT, and DHCP6_BUFFER_WAIT_INTERRUPTED 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 correct. (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 closed. (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=". 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 searches. (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/ Makefile.am. (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 needed. (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 client). (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 possible. (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" respectively. (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.