[ISC-support #20800] Improvements to Kea client packet processing - handling host reservations
Option to perform earlier host reservation lookup and then (optionally) to suppress this later if it has already been done.
This feature request originated in Support ticket https://support.isc.org/Ticket/Display.html?id=13430
The use case from this production environment is slightly complicated - multiple client requests for different services that 'look' like different and independent clients, whereas they're all originating from the same consumer provisioning. They can be associated with their consumer via the MAC address of the CPE device at the consumer premises. These all have host reservations in Kea; the CPE device MAC address can be added to the client packet.
The problem then is that host reservation processing takes place after subnet allocation, so it's not possible to use built-in host reservation process (e.g. against flex-id) for classification and subnet selection - it's too late.
The host reservation lookup is easily done earlier by means of a custom hook using a callout at pkt4_receive that:
- pulls the info from the packet
- uses that to call HostMgr to retrieve the global host reservation using the identifier retrieved from the client packet (as opposed to the client's own source MAC address)
- from that information sets class values
- lets Kea assign subnet appropriately
The downside of this approach is that this adds an additional host reservation lookup to the client packet processing flow.
Some environments might actually want the second host reservation lookup (it depends where the second MAC address has been added to the client packet and whether or not this involves flex-id), or they might not.
This feature request is raised to look at the use cases vs. processing flow/ordering to see if there's scope to add more flexibility/tuning.
(I would also hope that any work in this area tries hard to keep the configuration control for this as simple and as intuitive as possible).