Auto-detect congestion (busy state thresholds)
This is a general requirement to adapt to improve performance under unusual load. The feature will require some further design thought.
Congestion Handling Being able to handle peak loads is an important feature for service providers. Congestion handling features attempts to improve the DHCP performance when the service becomes busy and is not able to fulfill all incoming requests. In cable operators the following scenarios are usual:
- Massive firmware updates- causing cable modems to restart
- Power outages- affecting cable modems in a region or fiber node.
- A fiber node might serve up to ~2,000 subscribers
- CMTS reboots- due to scheduled maintenance or outages
- RF plant rearrangements- where fiber nodes are combined or splitted causing cable modems within the node to re register
- DDI infrastructure maintenance or outages.
- Business requirements- such as massive actions to customers, i.e. disabling customers with unpaid bills.
Suggestion Busy state threshold Defines a mechanism to allow Kea to evaluate whether it is operating in a normal or busy state. Kea could use the value of the “packet-queue-size” parameter in the multi-threaded configuration section to evaluate if the system should enter a busy state, for example when the queue capacity is 75% full the system transitions to a busy state and may take actions to improve DHCP performance, such as enabling one or more congestion handling features on the fly, like reducing logging, packet prioritization, and/or batch insertion. When the queue capacity is 25% full or less, the system should return from busy to normal state.
It is likely that customers would want to be able to adjust these high and low watermarks. It should be possible to explicitly enable/disable this feature. The various actions that Kea will take to handle the congestion should be determined based on some analysis of what will have the most impact in maintaining normal responsiveness to clients under peak loads.
# example suggested configuration section
"multi-threading": {
"enable-multi-threading": true,
"thread-pool-size": 4,
"packet-queue-size": 16
"busy-state-pct" : 75,
"normal-state-pct" : 25
}
The “capacity” value in the “dhcp-queue-control” configuration section might also be used to evaluate busy state.