WS-Anon - A Dataset of Web Service QoS Measurements using Anonymity Networks - Documentation


Ulrich Lampe (TU Darmstadt), André Miede (TU Darmstadt), Tim Lusa (TU Darmstadt), Stefan Schulte (TU Vienna), Ralf Steinmetz (TU Darmstadt), Schahram Dustdar (TU Vienna)

Corresponding Author: Ulrich Lampe - Multimedia Communications Lab - TU Darmstadt - Rundeturmstr. 10 - 64283 Darmstadt - Germany -

Version History

The most current version of WS-Anon is available through the WS-Anon homepage.


VersionRelease DateChanges / Comments
1.0April 24, 2012Initial release.


VersionRelease DateChanges / Comments
1.0bJanuary 8, 2013Updated information on the manuscript acceptance.
1.0aSeptember 24, 2012Updated information on the manuscript submission, added list of PlanetLab nodes.
1.0April 24, 2012Initial release.


WS-Anon is a comprehensive dataset that has been used for the analysis of the side effects of anonymity systems - namely JonDo and Tor - on the Quality of Service (QoS) of Web service invocations. It is based more than 2.25 million Web service invocations that have been conducted over the course of approximately three weeks.

For that purpose, a dummy Web service has been deployed to 10 globally distributed servers in the PlanetLab network. Subsequently, the measurements were taken from a central client computer, located in Darmstadt, Germany.

A manuscript that extensively describes both the acquisition and subsequent analysis of this dataset has been accepted at the 2013 Conference on Networked Systems (NetSys 2013) conference. Full bibographical information and a pre-print version of this manuscript are available in the publications section of our lab's Web site.

Using the Dataset

Data Import

The data is provided as a SQL script in the file ws-anon.sql. It can be easily imported into any SQL database. We recommend using XAMPP, which includes MySQL, as database backend. As management frontend, the use of HeidiSQL is recommended.

Data Structure

After the SQL script has been successfully executed, you should see a new database named ws_anon. This database comprises two tables, namely observations_parallel and observations_sequential.

Table observations_parallel

The table observations_parallel contains a total of 2,100 observations. Each observation corresponds to 800 parallel service calls. The table comprises 210 observations per server, which in turn comprise of 70 observations per access mechansism (Direct, JonDo, or Tor). The table structure is explained in more detail in the following.

Column NamePurpose or Meaning
idPrimary key with sequential and unique ID for each record.
serverCodeAlphanumerical code for the server resp. its geographical location (possible values: BR, CA, DE, JP, NZ, RU, TW, UK, US-1, US-2; please see the annex for details).
accessMechApplied access mechanism for the call (possible values: direct, JonDo, TOR).
timeoutTimeout for the calls, in seconds.
requestsNumber of parallely sent service requests (static value: 800).
finishedNumber of calls that successfully finished within the timeout (possible values: 0..800).
unfinishedNumber of calls that failed (possible values: 0..800).

Table observations_sequential

The table observations_sequential contains a total of 546,000 observations. Each observation corresponds to one sequential service calls. The table comprises 54,600 observations per server, which in turn comprise of 18,200 observations per access mechanism (140 batches with 130 Web service calls each). The table structure is explained in more detail in the following.

Column NamePurpose or Meaning
idPrimary key with sequential and unique ID for each record.
batchNumSequential batch number (possible values: 1..140).
callNumSequential call number within the batch (possible values: 1..130).
serverCodeSee table above.
accessMechSee table above.
timetoserverRequest transfer time between client and server, in milliseconds. NULL indicates a failure.
timetoclientResponse transfer time between server and client, in milliseconds. NULL indicates a failure.
processtimeCall process time on the server, in milliseconds. NULL indicates a failure.
responsetimeSum of transfer and process times above. NULL indicates a failure.
errormsgError message (possible values: OK - call sucessful; TIME_SYNC_FAIL - server and client clocks were not in sync; NOT_REACHABLE - could not transfer request; NOT_RESPONDING - did not receive reply).
availableCall successfully completed (possible values: 0, 1).

Data Analysis

Four sample SQL scripts, which have also been used in the analysis for abovementioned manuscript, are provided in the folder analysis. A brief explanation is provided in the following.

Script analysis__availability.sql

Provides analysis of the QoS parameter availability, for each server (rows in the query result) and access mechanism (columns in the query result) separately. The result fields AvgValue* and SdValue* provide the sample means and standard deviations, respectively. AbsInc* and RelInc* describe the absolute and relative differences between pairs of access mechanisms, based on the sample mean.

Script analysis__response_time.sql

Same as above, but for response time.

Script analysis__throughput.sql

Same as above, but for throughput.

Script analysis__response_time__cdf.sql

Provides a frequency count of response times across all serves, separately for each acess mechanism, suitable for creating a Cumulative Distribution Function (CDF).

Used PlanetLab Nodes

The following table provides an overview of the PlanetLab nodes that acted as Web servers in our experiments.
CodeCountryContinent / RegionURL
US-1United StatesNorth
US-2United StatesNorth