Remote working makes you face some "challenges" regarding networking setup. One of them can be reproduced as:

1- download a big file 2- upload a big file at the same time 3- while both are happening, connect to mumble and try to speak to your colleagues 4- at the same time, do a "ping www.google.com"

You should see the ping goes very high. 50ms is the expected/acceptable, but with this experiment you will get very high numbers (500 for example, or even worse).

At some point, your connection gets "stalled" and of course, you cannot really have a conversation in mumble.

All this is caused by something known as bufferbloat. You can mesure that on dslreports.com .

In short, bufferbloat means that the buffers from your router get full and you can't neither download or upload.

But there is some hope!

There is something called Smart Queue Management[1] that you can use with an openwrt router.

This hackweek project consists on configuring an openwrt router with SQM and test if the bufferbloat gets mitigated and so we can have a conversation with mumble at the same time we upload and download big files.

I will use this router:

http://www.gl-inet.com/mt300n/

Its price is 25€

[1] https://wiki.openwrt.org/doc/howto/sqm


Comments

  • jordimassaguerpla
    over 3 years ago by jordimassaguerpla | Reply

    I've followed the instructions on https://wiki.openwrt.org/doc/howto/sqm and it goes SUPER good. I can upload, download, talk in mumble, all at the same time, and the ping is somewhere between 50-60 ms, which is very good!!

  • bmwiedemann
    over 3 years ago by bmwiedemann | Reply

    btw: I have built comparable bufferbloat avoidance before using tc (from iproute2) and iptables to do traffic-shaping with rules as simple as packets <100 byte always go first and packets > 1300 byte always go last. (relying on port-numbers is often not good, as port 22 and 80 can transport both bulk and interactive data)

  • jordimassaguerpla
    over 3 years ago by jordimassaguerpla | Reply

    Cool! :) Could you share your scripts? I was having trouble combining both, tc and iptables. With just tc I was able to "shape" the traffic so that one connection could not "eat" all the bandwidth... however multiple connections were able to do it... with iptables I was able to prioritize one traffic based on the port, however when everything goes in the vpn I was not able to distinguish ....

    It would be great to see those scripts combining tc and iptables :)

  • bmwiedemann
    over 3 years ago by bmwiedemann | Reply

    <a href="http://paste.opensuse.org/5854684">http://paste.opensuse.org/5854684 traffic shaping script</a>

  • bmwiedemann
    over 3 years ago by bmwiedemann | Reply

    The basic concept is that you define buckets with different prios, and which traffic goes into which bucket is decided by the firewall-mark number (10 to 60 in my case) that is set by iptables in the mangle table.

    That way IAX/SIP should go into the fast (10) bucket, ACKs and interactive-ssh in the 20 and bulk traffic in the slow 50 and 60 that get sent out last.

Similar Projects

This project is one of its kind!