<section xml:id="congeston-handling-background">
<title>What is Congestion?</title>
<para>Congestion occurs when servers are subjected to client queries
- faster than they can be fulfilled. As a result, the servers begin
+ faster than they can be processed. As a result, the servers begin
accumulating a backlog of pending queries. The longer the high rate of
traffic continues the farther behind the servers fall. Depending on the
client implementations, those that fail to get leases either give up or simply
separate thread to read packets from the interface socket buffers. As the
thread reads packets from the buffers, they are added to an internal packet
queue, and the server's main application thread processes packets from this queue
- rather than from the socket buffers. By structuring it this way, we've introduced
- a configurable layer which can make decisions on which packets to process,
+ rather than from the socket buffers. By structuring it this way, a configurable layer
+ has been introduced which can make decisions on which packets to process,
how to store them, and the order in which they are processed by the server.
</para>
queue is implemented as a plug-in, which can replaced by a custom queue
implementation via a hook library. This should make it straightforward
for interested parties to experiment with their own solutions. (Developers
- may refer to isc::dhcp::PacketQueue and isc::dhcp::PacketQueueMgr, in the Kea
+ can refer to isc::dhcp::PacketQueue and isc::dhcp::PacketQueueMgr, described in the Kea
Developer's Guide).
</para>