This is a work in progress!
The initial requirements of the kea multi-threading packet processing design:
- It MUST be supported by DHCPv4 and DHCPv6 servers
- It MUST not break existing functionality
- It MUST compile and use supported dependencies on all supported platforms
- It MUST be configurable in the configuration file
- It MUST be configurable at run-time using control channel commands
- It MUST be configurable on the command line (still in discussion).
- It MUST support configuration options to enabling or disable this feature
- It MUST support configuration options to set the number of threads to be created
- It MUST not have impact on the old server functionality if the feature is disabled
- It MUST support MySql and PgSql back-ends
- It MUST support Memfile and Cassandra back-ends (initial implementation might disable the feature or use a hybrid approach - use locks which will impact performance - if configured with these back-ends)
- It MUST support using hooks (initial implementation might disable the feature or use a hybrid approach - use locks which will impact performance - if configured with unsupported hooks)
- It MUST not block planned evolutions e.g. moving database code to hooks
- It MUST use the Kea copyright including the license.
As the development goes further and the design is perfected, these requirements must be updated.