Due to the modular design it is easy to extend the
framework with additional compression algorithms in
the future, allowing for experiments combining com-
pression and transport protocol optimization combi-
nations.
The listener and connections are transport proto-
col specific implementations, and the client side con-
nection and the listener communicate over the same
protocol. The connections and the listener are sepa-
rated as much as possible from the core proxy server,
and the connection handler only passes the payload
data between the two connections using send and re-
ceive commands. This structure allows for quick im-
plementation of support for additional protocols in
the future, as these implementations only need to
able to separate streams and receive and send pay-
load data over the corresponding stream. Currently,
the following four protocols are supported: 1) Trans-
mission Control Protocol (TCP) (Postel, 1981), 2)
User Datagram Protocol (UDP) (Postel, 1980), 3)
Stream Control Transmission Protocol (SCTP) (Stew-
art, 2007), and 4) Advanced Message Queuing Proto-
col (AMQP) (OASIS, 2012). For AMQP, we used the
RabbitMQ implementation in our framework.
3.5 Network Emulator and Remote
Configuration
The netem tool provides functionality emulating
properties such as variable delay, loss, duplication,
bandwidth constraints, and packet reordering. Netem
is a part of Linux kernels since version 2.6, and ef-
fectively allows you to configure emulated links with
specific properties using a command line interface. In
our framework we installed Ubuntu 10.04 LTS on an
IBX-200 (IBX, 2012) and used that as our network
emulator. However, any machine that can run Linux
and has two network interfaces can be used for this
purpose.
In our framework, the network emulator running
on the IBX-200 node is remote controlled via SSH.
This is achieved by using the Java library sshj. The
remote control functions like a regular SSH session,
and is initiated by logging on to the IBX-200 using
public key authentication. An execute command is
then transferred to the IBX-200, starting the network
emulator scripts including the option set for the test
run.
3.6 Packet Capture and Analysis
To measure the protocol efficiency and bandwidth us-
age the SPADE framework captures network traffic
on the client side of the system. The network traffic
is captured using the Jnetpcap library to communicate
with the packet capture library pcap, which is a well
known open source tool used for capturing network
traffic. The tool also provides basic filtering options,
in order to reduce clutter and only capture the traffic
type we are interested in.
Round-trip times (RTT) are not measured by pcap,
but are calculated in the RequestRun module of
SPADE. After the test run is complete, all the network
traffic generated is saved to a file. The framework
then parses the dump file and calculates throughput
and protocol efficiency.
To make graphical representations of statistical
data produced, this component uses the GRAL library
to produce plots for throughput, packet sizes, time of
capture and RTT.
3.7 Graphical User Interface
The GUI was made as a tool to make it faster and
easier to set up and execute tests, and it includes the
following functionality:
• Editing the parameters of all the different modules
included in SPADE.
• Automatically setting parameters where this is
possible.
• Saving and loading test configurations.
• Queuing RequestRuns and automatically running
the queue.
• A client mode, where one SPADE instance can be
remote controlled from another SPADE instance.
Currently limited to transferring proxy configura-
tions.
• Choosing where to place the data files captured by
the pcap dumper.
The GUI is inspired by integrated developer envi-
ronments and has a workspace overview where you
create new components for the test environments.
Here, the most important components are the test sce-
narios and the proxy servers. There are panels show-
ing the information for each component, and panels
that allow you to edit these components. The experi-
ment queue containing the test scenarios waiting to be
started are contained in an area at bottom. The GUI
has support for saving and loading configurations in
order to reduce the workload associated with config-
uring a large amount of experiments and repeating
these multiple times. An overview of a typical setup
is given in Figure 3.
SPADE-ATestFrameworkforSOAPAnalysisinDynamicEnvironments
131