Next: HTTP Header-based Connection Control
Up: Experimental Results
Previous: Prioritized Listen Queue: Simple
To prevent starvation, low priority requests need to have some minimum
number reserved slots in the listen queue so that they are not always
preempted by a high priority request. However, reserving slots in the
listen queue arbitrarily could cause a high priority request to find a full
listen queue, which would in turn cause it to be aborted after
its 3-way handshake is completed.
To avoid starvation with fixed priorities, we combine the listen queue
priorities with SYN policing to give preferred clients higher
priority, but limiting their maximum rate and burst, thereby, implicitly
reserving some slots in the queue for the lower priority requests.
Table 3 shows the results for experiments with
three sets of Webstone clients with different priorities and rate
control of the high priority class. The lower priority class has
30 Webstone clients while the high priority class has 150 Webstone
clients spread over three different hosts.
With no SYN policing of the clients in the high priority class, the
two low-priority clients are completely starved.
Table 3 shows that rate limiting the clients in the
high priority class to 300 conn/sec prevents starvation; the medium
and low priority clients achieve a throughput of 78.6 and 4.1
conn/sec respectively.
3:
TCP SYN policing of a high-priority client to avoid
starvation of other clients.
Throughput (conn/sec) of each priority class |
client |
(rate, burst) limit of high priority |
priority |
none |
(300,300) |
(200,200) |
high |
381 |
306 |
196 |
medium |
0 |
78.6 |
180 |
low |
0 |
4.1 |
13 |
Next: HTTP Header-based Connection Control
Up: Experimental Results
Previous: Prioritized Listen Queue: Simple
Renu Tewari
2001-05-01