ProgMP Demo

ProgMP is a programming model for Multipath TCP scheduling. It provides powerful abstractions to develop own application- and preference-aware schedulers. This page provides an interactive demo. You can specify your own MPTCP scheduler and run it on our server, i.e., you can download content from our server using your own Multipath TCP scheduler.

Check our experimental ProgMP Demo iOS App.
You do not use Multipath TCP

This demo page provides only limited features without MPTCP. You may specify scheduler, but can not use them interactively. Check amIusingMPTCP.de for more details.

The interactive demo does not support HTTPS. Please switch to the HTTP version.

Specify your MPTCP scheduler

Check our ProgMP page for a detailed introduction, an overview of the language, and scheduler examples.

The interactive demo does not support HTTPS. Please switch to the HTTP version.
Scheduler checked successfully.
Scheduler check failed.
{{output}}
Scheduler stored as

http://progmp.net/progmp.html#{{saveOutput}}

This scheduler link is persistent, you may send the scheduler link to your friends or reference it from your paper.
{{saveOutputFail}}

Test your scheduler

We provide basic control and measurement features to fiddle with your specified scheduler. You may download a small file, watch the experienced application-layer round-trip time, and set scheduler registers.

You do not use Multipath TCP

This demo page provides only limited features without MPTCP. You may specify scheduler, but can not use them interactively. Check amIusingMPTCP.de for more details.

Control Scheduler

You may set scheduler registers using our extended socket API, e.g., ProgMP.setRegister(,)

Measurements

You may download a small file to test how your scheduler performs.

{{downloadResult}}

Hey, you are using only one subflow. Add some subflows!

Subflows:

#{{subflow.id}} with RTT {{subflow.srtt/1000.0/8.0 | number:2}}ms

Application-layer round-trip time*:{{appRTT}}ms

Debugging output of the specified scheduler:

{{dmesg}}

* The application-layer round-trip time is measured with HTTP requests.

Demo Video

Feedback

We would like to ask you for feedback. Please contact us if you have further comments.

How familiar are you with MPTCP?

Do you have (previous) experiences with MPTCP scheduler development?

Do you have experiences with Kernel Dev?

Do you think ProgMP is a convenient way to specify MPTCP schedulers?

Thanks for your feedback.
Please answer all questions.

How does this page work?

This page is a proof of concept and a research prototype. It uses persistent HTTP connections and ProgMP to provide isolated Multipath TCP schedulers. This page is still experimental and only supports IPv4 and HTTP. HTTPS will be supported soon. Please contact us if you experience problems.

Demo API

You can use our ProgMP demo from your applications, e.g., in iOS, using our API. You can control the scheduler connection for http://demo.progmp.net:86/v1/check_connection with the following requests:

  • Setting a new scheduler for your connection: POST to http://demo.progmp.net/api/setScheduler with {scheduler="your scheduler"}
  • Setting the default scheduler for your connection: POST to http://demo.progmp.net/api/setDefaultScheduler
  • Getting all debugging output for your current connection: http://demo.progmp.net/api/getdmesg

Note: For scheduler control, we rely on port 80. The test connections are running on port 86. This ensures that you can always modify your scheduler (e.g., reset).

Acknowledgments

This work has been funded by MAKI to make the Internet more adaptive.

Contact

Feel free to contact Alexander Frömmgen and Amr Rizk for comments and questions.