How to configure QoS for CrashPlan, which connects on HTTPS port, without affecting all other HTTPS traffic?

Solution 1:

Set the DSCP value you want via local machine policy using the process name and destination port to ensure you only tag crashplan traffic, not anything else on port 443.

I just blogged about this, including video:

http://blog.paulgeorge.co.uk/2012/06/07/crashplan-upload-traffic-with-dscp-tos-and-qos-on-windows-7/

EDIT : updated post with router setup http://blog.paulgeorge.co.uk/2012/06/11/setting-up-qos-on-draytek-2920n-router-using-dscp/

Solution 2:

I think I have this working for DD-WRT + Crashplan.

First, test your connection with speedtest.net or similar performance tool.

  1. Configure TOS in Crashplan

    In Crashplan, go to Settings → Network → TCP packet TOS. Here I selected DSCP and input a value of 56. That corresponds to 0x38; shifting right two bits gives us 0xE, which is a DSCP codepoint we can program into IPTABLES.

    I set this value for both WAN and LAN; after saving, I did a reboot.

    To confirm this was OK, I installed Wireshark and did a trace on tcp.port == 443. After starting Crashplan I could see the output backup traffic; sure enough, expanding the IP header showed that the DS codepoint was 0xE.

  2. Enable QoS in DD-WRT

    Simply enable QoS on the DD-WRT router, as described in the above comment: NAT/QOS → QoS → Start QoS (set to "Enable").

    I programmed in 85% of my available upload and download bandwidth.

  3. Create the iptables rule

    Here, we configure iptables to pattern match on the DS code point (DSCP) and then 'set mark' to the BULK group. Go to Administration → Commands and input the following into the text box:

    iptables -t mangle -I POSTROUTING -m dscp --dscp 0x0e -j MARK --set-mark 40
    iptables -t mangle -I PREROUTING  -m dscp --dscp 0x0e -j MARK --set-mark 40
    

    Click "Save Firewall" to commit these changes.

    Finally, I followed up with a reboot.

  4. Test

    I found it difficult to produce a table or diagnostic that showed that my rules were in effect. So, I simply did the ultimate test, which was to re-run the performance test described above, while Crashplan was running. Success! The upload and download speeds are basically the same, even though Crashplan was running in the background.

Solution 3:

There's a setting for CrashPlan to tag its packets itself: TCP packet TOS

Solution 4:

There is a tip on the DD-WRT forum.

Use this in your firewall script, the mark values are explained on the QoS wiki page.

iptables -t mangle -I POSTROUTING -d [destination ip] -j MARK --set-mark 40 
iptables -t mangle -I PREROUTING -s [source ip] -j MARK --set-mark 40

Since they're both using iptables, you can do the same as Tomato. You just don't have a nice GUI.

Solution 5:

I use Tomato, not DD-WRT, but I found it very easy to setup QoS for crashplan.

I configured QoS based upon destination IPs for central.crashplan.com on port 443 and classified it as bulk traffic.