2016-11-04

This post is cross-posted on the MAMI Project blog
here.

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 1.0.1 has been released today and is now available from GitHub, PyPI and Debian unstable. This is
a small stable update containing a documentation fix for the example
plugin.

PATHspider now contains 3 built-in plugins for measuring path transparency to
explicit congestion notification, DiffServ code points and TCP Fast Open. It’s
easy to write your own plugins, and if they’re good enough, they may be
included in the PATHspider distribution at the next feature release.

We have a GitHub
repository you can fork that has a premade directory structure for new
plugins. You’ll need to implement logic for performing the two connections, for
the A and the B tests. Once you’ve verified your connection logic is working
with Wireshark, you can move on to writing Observer functions to analyse the
connections made in real time as PATHspider runs. The final step is to merge
the results of the connection logic (e.g. did the operating system report a
timeout?) with the results of your observer functions (e.g. was ECN
successfully negotiated?) and write out the final result.

We have dedicated a section of the
manual to the development of plugins and we really see plugins as
first-class citizens in the PATHspider ecosystem. While future releases of
PATHspider may contain new plugins, we’re also making it easier to write
plugins by providing reusable library functions such as the tcp_connect()
function of the SynchronisedSpider that allows for easy A/B testing of TCP
connections with any globally configured state set. We also provide reusable
observer functions for simple tasks such as determining if a 3-way handshake
completed or if there was an ICMP unreachable message received.

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

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