Knowledge Base ISC Main Website Ask a Question/Contact ISC
Kea 1.2.0-beta Release Notes
Author: Wlodzimierz Wencel Reference Number: AA-01477 Views: 792 Created: 2017-04-07 16:12 Last Updated: 2017-04-07 16:21 0 Rating/ Voters
= Kea 1.2.0-beta, April 7 2016, Release Notes =


Welcome to the 1.2.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.2.0-beta adds the following features to Kea:


* Control Agent - is an optional daemon that can connect to command channels
  exposed by DHCPv4 and DHCPv6 (this capability in DDNS module is coming soon)
  and exposes it over REST API. It uses a clean, easy to use HTTP interface that
  receives commands defined in JSON syntax. A number of existing commands are
  available, with more being planned for each upcoming releases.


* kea-shell - is an example client that can connect to CA. It is a tool that is
  mostly intended to be used in scripts, but can also be used to send commands
  manually. It is written in Python (supports both 2.x and 3.x), is optional
  (no python needed by default) and serves as an illustration on how to take
  advantage of the REST API. Any software or environment that can form JSON
  commands and send them over an HTTP interface can take advantage of the new API.


* parser refactoring - Part of the Kea code that was responsible for
  understanding configuration files was very complex, difficult to understand
  and even more difficult to extend. With the introduction of the REST API and
  its new commands, new use cases appeared when a file on disk is not the only
  possible source of configuration. Therefore the Kea team spent significant
  effort to refactor configuration handling. The code is now much leaner,
  simpler and much more extensible. There are some user visible benefits, too:
  you can now use C++ (!//) and C (/* ... */) comments everywhere. C style
  comments can span multiple lines. It is also now possible to include other
  files in your configuration file. The default values for absent parameters
  are now clearly defined and many additional sanity checks have been
  implemented. Finally, the configuration error messages are now more
  descriptive and easier to understand.


* new commands - a number of new commands have been implemented. In particular,
  it is now possible to update (config-set), retrieve (config-get) or write
  the current configuration to disk (config-write). It is possible to list
  supported command (list-commands), check version (version-get) information
  or compilation details that cover dependencies versions (build-report) and
  more. Commands previously available only over command channel API are now
  also available over REST API.


* configuration test - A capability to test new configuration has been added.
  This works both from the command-line (see -t switch), via REST interface and
  command channel API (see config-test command).


* options in pools - It is now possible to specify options on a pool level.


* C++11 - Kea 1.2-beta is the first Kea release that requires C++11 support
  in your compiler.


* Overall 113 tickets and 15 pull requests on github have been closed.


== License ==


Kea 1.1.0 has been released under the Mozilla Public License, version 2.0.


   https://www.mozilla.org/en-US/MPL/2.0


== Download ==


The Kea 1.2.0-beta source may be downloaded from:


   http://ftp.isc.org/isc/kea/1.2.0-beta/kea-1.2.0-beta.tar.gz


A PGP signature of the distribution is at


   http://ftp.isc.org/isc/kea/1.2.0-beta/kea-1.2.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.1.0). (See the git history for more details and additional
development.)


1238.    [build]        tmark,tomek
    Library version numbers bumped for release.
    (Trac #5201    git 58c9c5b705d72031c1589c30c542384a9d43e0f3)


1237.    [bug]        marcin
    Fixed hanging Control Agent unit tests.
    (Trac #5200, git 65daafd135965f9eb0bd4c3a22085d4bd3c6ffbe)


1236.    [build]        zeitounator
    Improvements in tools/tests_in_valgrind.sh script.
    (Github #49, git 272e7babf9ebeab5f78850394d72c9431041e2e9)


1235.    [func]        MrMarvin
    kea-admin now supports -h (and --host) parameter that can specify
    MySQL or PostgreSQL database locations other than the default
    localhost.
    (Github #14, git 4038157a3499ad90956c98a2172c57b173f2b985)


1234.    [build]        fdupont
    Improved installation procedure for kea-shell.
    (Trac #5170, git 68a902fb723965ee6f5b7a8272224395917525cc)


1233.    [doc]        marcin
    Documented new component Kea Control Agent in the Administrator's
    Manual and the Developer's Guide.
    (Trac #5175, git abf7887ad65eb4b221a1fe61ea0c9773b4feaddb)


1232.    [func]        tomek
    host4_identifier and host6_identifier hook points have been added.
    Premium: Flexible Identifier (flex-id) hook point has been developed.
    It allows users to specify a custom expression that takes any
    option, field, characteristic or property of the packet to be
    used as identifier and then do reservations based on the evaluated
    expression for each incoming packet.
    (Trac #5132, git cd497526d5bff7ae55bb41c9264fb33943a0cf62)


1231.    [func]        marcin
    Control agent forwards commands to be handled by other Kea
    servers.
    (Trac #5078, git 19a50ed1ccafae19ef10d84cba73992cadf49753)


1230.    [bug]        fdupont
    kea-dhcp-ddns now correctly populates the original ID in the TSIG rdata
    when doing signed updates.  Prior to this the value was set to zero
    causing PowerDNS to reject then requests with a bad key error.
    (Trac #5071, git cafa3d5c24f0112b0b9384a9c1083fe8a3eeb2bf)


1229.    [func]        fdupont
    A new command: config-test has been implemented in DHCPv4, DHCPv6
    and control agent servers. It allows checking whether new
    configuration looks correct.
    (Trac #5150, git 5f6cf226e848baef8d9af64e16c1dbf617a0a798)


1228.    [bug]        fdupont
    Logging on syslog now uses correctly the given facility. If none
    is given the default facility is local0, and with an unrecognized
    value user (log4cplus default). The syslog openlog() ident
    parameter is the program name.
    (Trac #5053, git 532d9f0e459ab1450a83a5015a2dd54745794383)


1227.    [func]        fdupont, tomek
    Additional commands: version-get, build-report have been
    implemented for DHCPv4, DHCPv6 and Control Agent
    components. Control Agent also now supports shutdown command.
    (Trac #102, git 9d2b8326fc032876d74c1768c61c630987c25cc5)


1226.    [func]        fdupont
    Command line option -t support added to libprocess and implemented
    for kea-dhcp-ddns and kea-ctrl-agent. It allows configuration sanity
    checking. Note that some parameters, such as ip-address, port, and
    DNS server addresses for instance for kea-dhcp-ddns are not fully
    checked as sockets are not opened or connections are not attempted.
    (Trac #5152, git 2231d79ebebd3cdf432cd4a8ac32018d180e27b6)


1225.    [func]        tomek
    Two new commands: config-get (retrieves current configuration)
    and config-write (writes current configuration to disk) have been
    implemented.
    (Trac #5151, git ffb26811736a2ae6f9b5556b9823aa284b7e0aec)


1224.    [func]        fdupont
    toElement(), a crucial functionality for upcoming get-config
    and write-config command, has been implemented.
    (Trac #5114, git df38c26f957c9ac329718ac9d70ffbcf7b95c4e9)


1223.    [func]        tomek
    Kea-shell, a management client able to connect to REST interface
    provided by Control Agent, has been added. Control Agent now
    uses bison parser, which provides better sanity checks, improved
    comments and file inclusions.
    (Trac #5137, git 816dc5ccfa374bd9942a49c7bac475f6d0523caa)


1222.    [func]        fdupont
    Obsolete parameter 'allow-client-update' has been removed
    from DHCPv4 and DHCPv6 components.
    (Trac #5145, git 01fde297a978e2bd832655ac7276e5aa3a7e8400)


1221.    [func]        tomek
    Control agent is now able to parse the input configuration and
    store it in its configuration syntax structure. Upcoming tickets
    will take advantage of that information.
    (Trac #5134, git 828304f2f408888e4b096418e90e35ba524979d0)


1220.    [func]        parisioa, fdupont, tomek
    DHCPv4 and DHCPv6 parsers have updated to accept database port
    parameter. The parameter for Cassandra is now called
    "contact-points" (was "contact_points" previously).
    (Trac #5061, git d12b6f4a6d80d6bc854f2a8a086e412dc37867bc)


1219.   [func]        marcin
    Control Agent uses libkea-http to process commands over
    the RESTful interface.
        (Trac #5107, git 88ce715926a46b6b3832630116fc7782adc46c7b)


1218.    [func]        tmark, tomek
    Configuration parsing for D2 has been migrated to bison/flex
    and the SimpleParser framework.  This includes changes to
    libprocess which render the CPL agnostic to the underlying
    parsing mechanisms.
    (Trac #5110, git feb2cedc0936364a923ab78542a21114533dd0f5)


1217.    [func]        marcin
    Implemented libkea-http library.
    (Trac #5077, git cd72284b5b221e620770883db7e166c4d3ba7eb6)
    (Trac #5088, git 715d18f961801ffbd798a65b19459178c3a53857)
    (Trac #5099, git 7e8df7993f295431e2cb6a13858f746649c4e18d)


1216.    [func]        fdupont, tomek
    Command line option -t implemented for DHCPv4 and DHCPv6.  It
    allows configuration sanity checking. Note that not all parameters
    are completely checked. In particular, service and control channel
    sockets are not opened, and hook libraries are not loaded.
    (Trac #3770, git 1d12582e270935ee7b72548d9c66753f4eea4ca4)


1215.    [doc]        tomek
    Developer's Guide updated to cover flex/bison parser.
    (Trac #5112, git 44139d821c1f4e43dbff22d49101a0854e4f9f5b)


1214.    [func]        tomek
    Bison parser implemented for Control-agent. The code is able
    to syntactically parse input configuration, but the output
    is not used yet.
    (Trac #5076, git d99048aa5b90efa7812a75cdae98a0913470f5a6)


1213.    [bug]        fdupont
    Option string values containing comma can now be specified
    correctly by preceding comma with double backslashes (e.g.
    "foo\\,bar").
    (Trac #5105, git fa79ac2396aa94d7bac91bd12d3593ebaaa9386d)


1212.    [doc]        andreipavelQ
    Many spelling corrections.
    (Github #47, git a6a7ca1ced8c63c1e11ef4c572f09272340afdd7)


1211.    [func]        andreipavelQ
    Updated PostgreSQL version reporting to be in line with
    MySQL and Cassandra.
    (Github #42, git 7ef4a190facadd66775b4a44c696d1c4215616cd)


1210.    [doc]        andreipavelQ
    Doxygen version updated to 1.8.11.
    (Github #45, git ce72998382b62269823fa0dcbfa41dfa9c72b69e)


1209.    [func]        tomek
    Relay options are now printed in DHCPv6 when sufficiently detailed
    debug logging is requested.
    (Trac #5131, git 5bf58b21fcf07f2e2e97275efa1f76cde913b30a)


1208.    [func]        tomek
    Global DHCPv4 and DHCPv6 parsers have been migrated to the
    SimpleParser framework. Several parameters (renew-timer,
    rebind-timer, preferred-lifetime, valid-lifetime, match-client-id,
    next-server, decline-probation-period, dhcp4o6-port,
    echo-client-id) now have explicit default values.
    (Trac #5019, git f3538dd031e6f29abcd516f425d72c8f929abbb0)


1207.    [func]        fdupont
    Client classes parser migrated to SimpleParser. The 'name'
    parameter in 'client-classes' definitions is now mandatory.
    (Trac #5098, git e93906e48a6e2b0ff78c5e37dca642646fe47d43)


1206.    [func]        tomek
    'hooks-libraries' parser migrated to SimpleParser. The code will
    now refuse a configuration if a hook library fails to load.
    (Trac #5031, #5041, git 1bbaf4cbcf6fda59bacdf526a6c762315fdd88a1)


1205.    [func]        tomek
    Parsers for interfaces configuration converted to SimpleParser.
    Removed obsolete 'version' parameter in Dhcp6.
    (Trac #5020, #5038, git 3d8e48c640e302670c04907468d11faafbe9fe7b)


1204.   [func]         marcin
    Added 'control_command_receive' hook point to Kea Command
    Manager.
    (Trac #5100, git d0c7cb29a7df3588c540afb4ca56de55f26142e0)


1203.   [func]         marcin
    Implemented TCPAcceptor class in libkea-asiolink. This class
    provides means to listen and asynchronously accept new TCP
    connections.
    (Trac #5094, git 920ba90696ba9d8579a7db5e1efcf955d6654a96)


1202.    [func]        tomek
    Parsers for mac-sources, control-socket, and relay-info converted
    to SimpleParser. It is no longer accepted to specify empty
    mac-sources. Either specify actual values in mac-sources or
    don't specify mac-sources at all.
    (Trac #5032, git f1c9dee0936b48be28f890ffd428fbdeb87c12ea)


1201.    [func]        tmark
    kea-dhcp4 and kea-dhcp6 now support the "set-config" command.
    The command causes the server to replace its current configuration
    with the configuration supplied as the command's argument.
    (Trac #5046, git 4afbdcf89c9f83d944f774d05bd401d3f2768d10)


1200.    [func]        tmark
    kea-dhcp4 and kea-dhcp6 now support the Command Channel "libreload"
    command.  The command causes the server to unload and then load all
    currently loaded hook libraries.
    (Trac #3238, git d4d8665494e1847b34b66f8ef542851ea6f0213c)


1199.    [func]        tomek, fdupont
    Dhcp4 parser migrated to bison. This yields a number of user
    visible changes:
    - better comment handling (bash, C, C++ style comments)
    - file includes now supported
    - better syntax checking
    - added advanced.json config example
    - removed obsolete 'version' parameter
    (Trac #5017, git 1cf853c595a100c86f9b2b3353f1b5964d902147)


1198.   [func]         marcin
    Created kea-ctrl-agent. This application currently doesn't
    do anything. Future tickets will add REST API to allow for
    managing Kea services.
    (Trac #5075, git 1ec7586da5ae1474b52d5a395fb80ee37d6d568e)


1197.    [doc]        tomek
    Configuration examples now set lfc-interval to a default
    value of one hour.
    (Trac #5072, git cf4362196fa2b7892643d1e40b974bb450a3de7e)


1196.    [func]        tomek, fdupont
    Dhcp6 parser migrated to bison. This yields a number of user
    visible changes:
    - better comment handling (bash, C, C++ style comments)
    - file includes now supported
    - better syntax checking
    (Trac #5036, git 4c5902da95a5228275cdb151b357864cfa9c31f5)


1195.    [build]        fdupont
    Altered to compile in C++ 2011 standard mode. Also replace (most)
    instances of the deprecated std::auto_ptr with std::unique_ptr.
    (Trac #5066, git a060d4a983860bf3056d50d9bf7ee4355c8372f2)


1194.   [build]         marcin
    Moved StateModel class from D2 to libkea-util.
    (Trac #3175, git 270ec379aec2894104a299cdd1080e24007e25fb)


1193.    [doc]        stephen
    Update Hook Developers documentation to make it clearer where
    the Kea include files and libraries are located.
    (Trac #5069, git 14a78caaf3af9fe9a0ffe2c8af784eab78e813e0)


1192.   [build]     marcin
    Created libkea-process library and moved the Controllable
    Process Layer (CPL) from D2 to this new library.
    (Trac #5074, git 4563925f7966e9da2132eb427e742cc3d3feee5d)


1191.    [build]        tomek
    Optional support for premium package added.
    (Trac #5027, git 5ff51f28a1f05d941bb117986922a6f410f23c6c)


1190.    [func]        tomek
    User context implemented: an arbitrary user information can
    now be defined for address and prefix pools.
    (Trac #5023, git 4f81789e19b72c933bcf86e402b417c63bd7bd3f)


1189.    [func]        fdupont
    Owing to API changes, crypto code now requires OpenSSL 1.0.1 or
    later.
    (Trac #3908, git 4c14fdfd4187a4c8f7b775432082b76782e47663)


1188.    [doc]        vlegout
    Fixed several spelling mistakes.
    (Github #32, git d51c005519c4add6fd0c37bcd68b0fbe94941b2d)


1187.    [bug]        marcin
    DHCPv4 server allows for allocating multiple leases for the
    same hardware address if a different client identifier is
    used for each lease. This facilitates the PXE boot use cases
    where a booted machine may request a lease multiple times.
    (Trac #5029, git 03defed4d8bb9a997d31dbfcf30ae3f866bd3353)


1186.    [func]        marcin
    Support for DHCPv6 options defined in RFC6603 and RFC7598. Thanks
    to Andrei Pavel and Cristian Secareanu of Qualitance for submitting
    initial implementation.
    (Trac #github24, git 59b62eb3ddd9db62c04bd47cd8fbdc1af62fbc1b)


1185.    [build]        marcin
    Install Kea headers to be used for building external libraries.
    Before this change some required headers were not installed.
    (Trac #5055, git a46087b7b7face4a1318658bbdcbf7602c1bb729)


1184.    [bug]        eest
    Fixes in the occasionally failing LFC unit test. This
    fix was provided by Patrik Lundin.
    (Github #31, git 69a5722bf3b41bf3b2bc0c2bcac966c23c08f62d)


1183.    [bug]        tmark
    kea-dhcp4 now correctly loads declined leases from CSV
    lease files. Prior to this, declined leases were being
    incorrectly and silently discarded.  In addition, both
    kea-dhcp4 and kea-dhcp6 will now emit an error log for
    each invalid row encountered when loading leases from
    CSV files.
    (Trac #5058, git 29b088079bed3c5059fdf8a43a4e79cd7f9a4207)


1182.    [func]        marcin
    DHCP servers detect overlapping pool ranges during
    configuration.
    (Trac #2280, git c8f931e0189c9630f5fba5d2a5553bed4abf36f7)


1181.    [func]        marcin
    Extended DHCPv6 server to allow for specifying DHCP options
    on address and prefix pool levels.
    (Trac #5022, git e3b2785c79aedbb0c8af7468d61f6d61dafd2282)




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-2017 Internet Systems Consortium

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.

Feedback
  • There is no feedback for this article
Quick Jump Menu