When the SYN packet is silently dropped, the requesting client will
time-out waiting for a SYN ACK and retry again with an exponentially
increasing time-out value. An alternate option, which we
do not consider, is to send a TCP RST to reset the connection
indicating an abort from the server. This approach, however, incurs unnecessary extra
overhead. Secondly, some clients send
a new SYN immediately after a TCP RST is received instead of
aborting the connection.
Note that we drop non-compliant SYNs even
a socket is created
for the new connection thereby investing only a small amount of
overhead on requests that are dropped.
To provide service differentiation, connection requests are aggregated based on filters and each aggregate has a separate token bucket profile. Filtering based on client IP addresses is useful since a few domains account for a significant portion of a web server's requests [12]. The rate and burst values are enforced only when overload is detected and can be dynamically controlled by an adaptation agent, the details of which are beyond the scope of this paper.