A preview of Neubot 0.4.16.9 - part 1

Academic paper@bassosimone

With this blog post (and with the follow up posts) I describe what's new in the next version of Neubot, 0.4.16.9. The testing of the new version is still in progress, but I am confident that I will release it next week, probably on Tuesday.

In this first post I describe the two most relevant changes since the previous stable version, 0.4.15.6, that is: the new DASH test and the support for tests as plugins. In the follow up posts I will describe more changes since 0.4.15.6.

Update — Because I have now released Neubot 0.4.16.9, I will not write the second part of this blog post. Please, refer to the release announce for the whole list of changes: http://www.neubot.org/neubot-0.4.16.9.

To see the difference between the two version as well as all the commits, please check the comparison of 0.4.15.6 and 0.4.16.9.

The new DASH test

The most relevant change is the new DASH test, written by Antonio Servetti and your truly. This new test emulates the MPEG DASH HTTP-based streaming solution (and international standard); DASH is, in fact, the acronym of Dynamic Adaptive Streaming over HTTP.

The server side of the DASH test emulates an HTTP server that exports a video resource composed of fifteen two-second segments of video, each encoded using a wide range of rates (from 100 Kbit/s to 20 Mbit/s). The client side requests all the segments of the video, and selects for each segment the highest available rate that is lower than the available bandwidth (estimated during the download of the previous segment). Therefore, the test should not create too much queue (and extra delay) at the bottleneck (typically the gateway).

I will be more precise with a follow-up blog post dedicated to the impact of the DASH test on the Neubot user's quality of experience (QoE). Here it suffices to say that, as far as I can tell and as far as I experimented, such impact is low, unless one plays online games like WoW (because all the tests generate extra delay every half an hour for 10-20 second, thus increasing the likelihood of being fragged1).

Tests as plugins

The new DASH test is the first Neubot test written as a plugin2. To interact with the DASH code, in fact, Neubot does not cherry-pick functions, variables, and classes from the mod_dash directory with the import statement. Rather, Neubot calls the modprobe() function that asks the mod_load() function of the DASH plugin to perform certain actions (e.g., register the DASH test).

The practical advantage of the modprobe() function is that Neubot is now more cleanly separated from its plugins. Therefore, it should be simpler to write new plugins, because the interface (i.e., the mod_load() function) is clearly specified. Also, it should be possible to develop Neubot and its plugins separately (as long as the mod_load() interface remains the same).

Footnotes

1. I was not the one who played WoW and counterstrike, it was my flatmate. This explains why, going on memory, I recalled that to frag was a commonly used verb in WoW. Apparently it isn't. Oops!

2. In general plugins may or may not be distributed along with the application that they extend. In this case the DASH plugin is included into the Neubot distribution; therefore, you don't need to download and install the DASH plugin separately, because, when Neubot will automatically update to 0.4.16.9, or when you will install 0.4.16.9, the DASH plugin will be installed as well.