Throughput (conn/sec) | |||
URL | AFPA | AFPA on, | AFPA on, |
off | (no cache) | (no cache) | |
length | no rule | matching rule | |
11 char. | 370.1 | 340.5 | 338.3 |
80 char. | 361.5 | 321.9 | 319.4 |
160 char. | 355.1 | 321.1 | 303.7 |
Operation | Cost(![]() |
|
TCP SYN policing | 1 filter rule | 7.9 |
3 filter rules | 9.6 | |
classification and priority | 1 rule | 4.4 |
3 rules | 5.0 | |
AFPA including URL parsing | 19 | |
1 rule | 5.0 | |
URL-based rate control | 2 rules | 5.8 |
including URL matching | 3 rules | 6.5 |
1 rule | 3.8 | |
URL-based priority | 2 rules | 4.1 |
including URL matching | 3 rules | 4.3 |
We quantify the overhead of matching URLs in the kernel for varying URL
lengths.
Table 5 shows that the overhead of matching
a URL to a rule is moderate (under 6% for a 160
character URL). The throughput numbers are for 20
Webstone clients requesting an 8 KB file.
Rules are matched using the standard string
comparison () with no optimizations; better matching
techniques can reduce this overhead significantly. On a cache miss,
the in-kernel AFPA cache introduces an overhead of about 10% for an 8
KB file. However, the AFPA cache under normal conditions increases
performance significantly for cache hits. In our experiments we have
the cache size set to 0 so that AFPA cannot serve any object from
the cache. When caching is enabled
Webstone received a throughput of over 800 connections per second on a
cache hit.
Table 6 summarizes the additional overhead of the
implemented kernel mechanisms. The overhead of compliance check and filter
matching for TCP SYN policing with 1 filter rule is 7.9 secs.
Simply matching the filter, allocating space to store QoS state, and
setting the priority adds an overhead of around 4.4
secs for 1 filter rule. The policing controls are more expensive as
they include accessing the clock for the current time.
Surprisingly, the URL matching and rate control has a low overhead of 5.0
secs for a URL of 11 chars. This happens to be lower than SYN
policing as the
matching is cheaper for one short URL compared to
matching multiple IP addresses and port numbers.
The overhead of URL matching and setting priorities for a single rule is
around 3.8
secs.
The most expensive operation is the call to
AFPA to parse the URL. AFPA not only parses the URL,
but also does logging, checks if the requested object is in the network buffer cache,
and pre-computes the HTTP response header.