2016-10-22

In today’s Internet we see an increasing deployment of middleboxes. While
middleboxes provide in-network functionality that is necessary to keep networks
manageable and economically viable, any packet mangling — whether essential for
the needed functionality or accidental as an unwanted side effect — makes it
more and more difficult to deploy new protocols or extensions of existing
protocols.

For the evolution of the protocol stack, it is important to know which network
impairments exist and potentially need to be worked around. While classical
network measurement tools are often focused on absolute performance values,
PATHspider performs A/B testing between two
different protocols or different protocol extensions to perform controlled
experiments of protocol-dependent connectivity problems as well as differential
treatment.

PATHspider is a framework for performing and analyzing these measurements,
while the actual A/B test can be easily customized. Late on the 21st October,
we released version 1.0.0 of PATHspider and it’s ready for “production” use
(whatever that means for Internet research software).

Our first real release of PATHspider was version 0.9.0 just in time for the
presentation of
PATHspider at the 2016
Applied Networking Research Workshop co-located with IETF 96 in Berlin earlier
this year. Since this release we have made a lot of changes and I’ll talk about
some of the highlights here (in no particular order):

Switch from twisted.plugin to straight.plugin

While we anticipate that some plugins may wish to use some features of
Twisted, we didn’t want to have Twisted as a
core dependency for PATHspider. We found that
straight.plugin was not just a
drop-in replacement but it simplified the way in which 3rd-party plugins could
be developed and it was worth the effort for that alone.

Library functions for the Observer

PATHspider has an embedded flow-meter (think something like
NetFlow but highly customisable). We
found that even with the small selection of plugins that we had we were
duplicating code across plugins for these customisations of the flow-meter. In
this release we now provide library functions for common needs such as
identifying TCP 3-way handshake completions or identifying ICMP Unreachable
messages for flows.

New plugin: DSCP

We’ve added a new plugin for this release to detect breakage when using
DiffServ code points
to achieve differentiated services within a network.

Plugins are now subcommands

Using the subparsers feature of
argparse, all plugins
including 3rd-party plugins will now appear as subcommands to the PATHspider
command. This makes every plugin a first-class citizen and makes PATHspider
truly generalised.

We have an added benefit from this that plugins can also ask for extra
arguments that are specific to the needs of the plugin, for example the DSCP
plugin allows the user to select which code point to send for the experimental
test.

Test Suite

PATHspider now has a test suite! As the size of the PATHspider code base grows
we need to be able to make changes and have confidence that we are not breaking
code that another module relies on. We have so far only achieved 54% coverage
of the codebase but we hope to improve this for the next release. We have
focussed on the critical portions of data collection to ensure that all the
results collected by PATHspider during experiments is valid.

DNS Resolver Utility

Back when PATHspider was known as
ECNSpider, it had a utility for resolving
IP addresses from the Alexa top 1 million
list.
This utility has now been fully integrated into PATHspider and appears as a
plugin to allow for repeated experiments against the same IP addresses even if
the DNS resolver would have returned a different addresss.

Documentation

Documentation is definitely not my favourite activity, but it has to be done.
PATHspider 1.0.0 now ships with documentation covering commandline usage,
input/output formats and development of new plugins.

If you’d like to check out PATHspider, you can find the website at
https://pathspider.net/.

Debian packages will be appearing shortly and will find their way into
stable-backports within the next 2 weeks (hopefully).

Current development of PATHspider is supported by the European Union’s Horizon
2020 project MAMI. This project has received
funding from the European Union’s Horizon 2020 research and innovation
programme under grant agreement No 688421. The opinions expressed and arguments
employed reflect only the authors’ view. The European Commission is not
responsible for any use that may be made of that information.

Show more