Presentation is loading. Please wait.

Presentation is loading. Please wait.

Kea – Modern DHCP Engine

Similar presentations


Presentation on theme: "Kea – Modern DHCP Engine"— Presentation transcript:

1 Kea – Modern DHCP Engine
01/09/12 01/09/12 Kea – Modern DHCP Engine Open Source WG RIPE68, Warsaw, Poland 14 May 2014 Tomek Mrugalski 1

2 Who is Tomek? M.Sc., Ph.D from Gdansk University of Technology
01/09/12 01/09/12 Who is Tomek? M.Sc., Ph.D from Gdansk University of Technology Primary author of Dibbler Portable DHCPv6 implementation (srv, cli, relay) Supports Win 2k-Win8, Linux, BSD, Solaris Confirmed use in 34 countries 7 years at Intel (Network Quality Labs, chipsets group) 3 years at ISC Lead Developer of Kea (formerly BIND10 DHCP) Occasional contributor to ISC-DHCP Active IETF participant since 2009 DHC WG co-chair 4 RFCs, 18+ drafts (all DHCP-related) 2 2

3 ISC DHCP Open-Source Managed open source model (closed repository, semi-closed bug system) First version released in 1997 Default DHCP software in many distributions Server/relay/client for IPv4 & IPv6 Feature-rich First version was released in V4 added IPv6 support and was released in Latest release is (released 2014). Provides a full set of DHCP components and is the the default software in many distributions, although the client is more widely used. However, it is fair to say that the relay is perhaps not widely used, as most installations ill use the relays included in their bridges. Lots of features. At points, the configuration file is a combination between a configuration language and procedural language.

4 Why new DHCP implementation?
Existing code is 18 years old Networks have changed Hardware has changed Use cases have changed Drawbacks with ISC DHCP Complex code, difficult to extend Documentation lacking Performance not always sufficient Partial dynamic configuration (OMAPI) Over the years, networks have got larger and topologically more complex. In particular mobility – single client with single point of attachment. Now we have mobile devices that can move between locations. Did have networks that were flat – now we have a lot of complexity. --BACKGROUND— When a client moves between subnets, old lease could still be valid. Brings new requirement that keep multiple leases for same client. Another example is host reservations: in ISC DHCP these are global (as when designed there was no no mobility) and we have a reservation of one address per host. Now a reservation may cover multiple subnets if host is mobile. The old design was extended, but reservations are still a global list. --END BACKGROUND— Hardware has got faster and multiple cores/cpus are now common. Memory is not a limitation any more. In short, a number of the original assumptions are no longer valid. Mature product. Which means it’ old and has been extended many times – often without any accompanying internal documentation, a lot of which was lacking in the first place. . Which means that bits of it are, quite frankly, difficult to maintain and it is difficult to extend further. The senior developer on this product can get quite depressed if he has to work on certain parts of the code. Another issue is performance. Some of this is down to choice of data structures within the code. Lack of encapsulation means that changes here have lots of ramifications and prone to error.

5 Kea and BIND10 history ISC has been developing BIND10 since late 2009
01/09/12 01/09/12 Kea and BIND10 history ISC has been developing BIND10 since late 2009 DHCP components started in mid-2011 ISC stopped BIND10 development in April 2014 => Bundy (non-ISC, => Kea (ISC, 5 5

6 Kea :: Overview DHCPv4 Server DHCPv6 Server DNS Updates perfdhcp
01/09/12 01/09/12 Kea :: Overview DHCPv4 Server DHCPv6 Server DNS Updates perfdhcp general purpose DHCP library IPv4/IPv6 packet parsing/assembly IPv4/IPv6 options parsing/assembly interface detection (Linux, partial BSD/Mac OS) socket management libdhcp++ Why a new version of DHCP? Same reasons as BIND 10: Code around for more than 10 years, world has changed - when first written, extension of BOOTP – now a separate protocol IPv6 is coming along DHCP has evolved, specialised boxes, new ideas New architecture for next 10 years Why part of BIND 10? Same framework: multi process - modularity Run-time configuration/control Advantaged of combinging systems on same server 6 6

7 Kea :: Current status DHCPv6 DDNS Server
01/09/12 01/09/12 Kea :: Current status DHCPv4 Server DDNS DHCPv6 Server Address assignment, renewal, release Expiration: expired lease can be reused Flexible option definitions Standard options Custom options Nested options Option namespaces Vendor options (including DOCSIS3.0) Prefix Delegation (DHCPv6) DNS Updates (conflict resolution, no TSIG yet) Dynamic reconfiguration (no restart needed) Why a new version of DHCP? Same reasons as BIND 10: Code around for more than 10 years, world has changed - when first written, extension of BOOTP – now a separate protocol IPv6 is coming along DHCP has evolved, specialised boxes, new ideas New architecture for next 10 years Why part of BIND 10? Same framework: multi process - modularity Run-time configuration/control Advantaged of combinging systems on same server 7 7

8 Kea :: Switchable lease database
01/09/12 01/09/12 Kea :: Switchable lease database Scalable 2M devices DHCPv4/6 server MySQL MySQL Can use standard tools to read/update PostgreSQL Can use standard tools to read/update Performance: ??? (haven’t measured yet) Memfile Custom developed in C++ Flat file storage (CSV) Offers memory-only and memory+disk-write Very high performance (in in-memory mode), high performance in memory+disk mode) Abstract LeaseMgr C++ class, add your favourite storage PgSQL Memfile C++ Abstract LeaseMgr Why a new version of DHCP? Same reasons as BIND 10: Code around for more than 10 years, world has changed - when first written, extension of BOOTP – now a separate protocol IPv6 is coming along DHCP has evolved, specialised boxes, new ideas New architecture for next 10 years Why part of BIND 10? Same framework: multi process - modularity Run-time configuration/control Advantaged of combinging systems on same server 8 8

9 Hooks :: Extending the Kea server
User Library 1 Custom library1 User Library 2 Custom library2 F1() Step A Step B G1() DHCP packet processing Step C With hooks, users can write code that is dynamically loaded into the server (V4 and V6 – DHCP-DDNS will likely include some hooks as well). At certain points in its processing (the hooks), the server will check whether any loaded library has attached a function to that hook. If it has, the function is called. Functions can inspect and modify the data. For example, one hook is placed at the point where an incoming packet has been received and all options parsed. A hook could inspect the client identification and consult with an external database to see if a lease should be handed to it: if so, it could attach or modify options: if not, it could instruct the server to drop the packet. As the slide suggests, multiple libraries can be loaded. If more than one library supplies a function for a hook, the system calls the functions from the libraries in the order that the libraries are loaded. It is possible to pass information from one library to another although, of course, that relies on the second library understanding information passed by the first. Step D F2() G2() Step E

10 Kea Roadmap (1) ftp://ftp.isc.org/isc/bind10/1.2.0/bind10-1.2.0.tar.gz
Kea 0.8 (April 2014) Available now in BIND ftp://ftp.isc.org/isc/bind10/1.2.0/bind tar.gz Kea 0.9 (Summer 2014) Dropping BIND 10 framework* Configuration stored in JSON file Keeping on-line reconfiguration (signals, better solution TBD) Complete FreeBSD (stretch) So where are we now: Kea 0.8 is now out with the final release of BIND 10. This is integrated with the BIND 10 framework. In particular, configuration is via a series of commands through the command program. Kea 0.9 is due out this summer as an independent product, without the BIND 10 superstructure. Configuration will be through a file, as is the case with ISC DHCP, although the syntax will be different. * Details TBD, tentative plan: retain capability to build stand-alone and pluggable into Bundy framework

11 Kea Roadmap (2) 0.9 Q3 2014 1.0 Q2 2015 2.0 2015 3.0 2016 BIND10 framework removal JSON configuration BSD (stretch) Host reservation Client classification Full lease expiration Failover/HA solution Statistics MAC in DHCPv6 Reconfiguration iPXE External API completion Configuration migration Basic GUI ISC DHCP feature uplift ISC DHCP EOL? Disclaimer 1: The team has not yet scoped beyond 1.0 Disclaimer 2: Dates are tentative and subject to change.2014

12 Want to help? http://kea.isc.org Kea is fully open source
01/09/12 01/09/12 Want to help? Kea is fully open source Core repository is public Bug datatase public Mailing lists, jabber public Test, report bugs Contribute Submit patches (read Contributor’s Guide first) We are looking for sponsors (money and developers) Development contracts Review design documents (e.g. requirements) Looking for contributions: Additional back ends Apps via Hooks API Basic GUI 12 12

13 01/09/12 Thank you kea.isc.org


Download ppt "Kea – Modern DHCP Engine"

Similar presentations


Ads by Google