Netgate Discussion Forum
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Search
    • Register
    • Login

    WAN optimization/acceleration

    Scheduled Pinned Locked Moved General pfSense Questions
    ipsecipsec vti qosslow throughputproxy
    16 Posts 3 Posters 1.9k Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • N
      netblues @rtw915
      last edited by

      @rtw915 Can you possibly try iperf on pf boxes and outside the tunnel ?
      Or port forward one end on windows and run iperf again over public ip and compare.
      This will give an idea about tunnel overheads.

      1 Reply Last reply Reply Quote 0
      • R
        rtw915
        last edited by

        I setup a port forward NAT rule. I don't want to have my public IP on here so it will be officiated. It does not seem like the tunnel is really adding that much overhead, right?

        C:\Temp\iperf-3.1.3-win64>iperf3.exe -c public_IP
        Connecting to host public_IP, port 5201
        [  4] local 10.10.10.42 port 65164 connected to public_IP port 5201
        [ ID] Interval           Transfer     Bandwidth
        [  4]   0.00-1.00   sec   768 KBytes  6.29 Mbits/sec
        [  4]   1.00-2.00   sec  2.00 MBytes  16.8 Mbits/sec
        [  4]   2.00-3.00   sec  1.88 MBytes  15.7 Mbits/sec
        [  4]   3.00-4.00   sec  1.88 MBytes  15.7 Mbits/sec
        [  4]   4.00-5.00   sec  1.88 MBytes  15.7 Mbits/sec
        [  4]   5.00-6.00   sec  2.00 MBytes  16.8 Mbits/sec
        [  4]   6.00-7.00   sec  1.88 MBytes  15.7 Mbits/sec
        [  4]   7.00-8.00   sec  1.88 MBytes  15.7 Mbits/sec
        [  4]   8.00-9.00   sec  2.00 MBytes  16.8 Mbits/sec
        [  4]   9.00-10.00  sec  1.88 MBytes  15.7 Mbits/sec
        - - - - - - - - - - - - - - - - - - - - - - - - -
        [ ID] Interval           Transfer     Bandwidth
        [  4]   0.00-10.00  sec  18.0 MBytes  15.1 Mbits/sec                  sender
        [  4]   0.00-10.00  sec  18.0 MBytes  15.1 Mbits/sec                  receiver
        
        iperf Done.
        

        Optimal TCP window size:

        C:\Temp\iperf-3.1.3-win64>iperf3.exe -c public_IP -w 2250000
        Connecting to host public_IP, port 5201
        [  4] local 10.10.10.42 port 60842 connected to public_IP port 5201
        [ ID] Interval           Transfer     Bandwidth
        [  4]   0.00-1.00   sec  2.88 MBytes  24.1 Mbits/sec
        [  4]   1.00-2.00   sec  1.00 MBytes  8.39 Mbits/sec
        [  4]   2.00-3.00   sec  2.25 MBytes  18.9 Mbits/sec
        [  4]   3.00-4.00   sec  4.12 MBytes  34.6 Mbits/sec
        [  4]   4.00-5.00   sec  5.12 MBytes  43.0 Mbits/sec
        [  4]   5.00-6.00   sec  6.50 MBytes  54.6 Mbits/sec
        [  4]   6.00-7.00   sec  8.25 MBytes  69.2 Mbits/sec
        [  4]   7.00-8.00   sec  9.25 MBytes  77.6 Mbits/sec
        [  4]   8.00-9.00   sec  6.00 MBytes  50.3 Mbits/sec
        [  4]   9.00-10.00  sec  3.00 MBytes  25.2 Mbits/sec
        - - - - - - - - - - - - - - - - - - - - - - - - -
        [ ID] Interval           Transfer     Bandwidth
        [  4]   0.00-10.00  sec  48.4 MBytes  40.6 Mbits/sec                  sender
        [  4]   0.00-10.00  sec  46.5 MBytes  39.0 Mbits/sec                  receiver
        
        iperf Done.
        

        10 Parallel streams:

        C:\Temp\iperf-3.1.3-win64>iperf3.exe -c  public_IP -P 10
        Connecting to host  public_IP, port 5201
        [  4] local 10.10.10.42 port 59407 connected to  public_IP port 5201
        [  6] local 10.10.10.42 port 59417 connected to  public_IP port 5201
        [  8] local 10.10.10.42 port 59421 connected to  public_IP port 5201
        [ 10] local 10.10.10.42 port 59431 connected to  public_IP port 5201
        [ 12] local 10.10.10.42 port 59441 connected to  public_IP port 5201
        [ 14] local 10.10.10.42 port 59451 connected to  public_IP port 5201
        [ 16] local 10.10.10.42 port 59464 connected to  public_IP port 5201
        [ 18] local 10.10.10.42 port 59465 connected to  public_IP port 5201
        [ 20] local 10.10.10.42 port 59475 connected to  public_IP port 5201
        [ 22] local 10.10.10.42 port 59488 connected to  public_IP port 5201
        [ ID] Interval           Transfer     Bandwidth
        [  4]   0.00-1.00   sec   256 KBytes  2.10 Mbits/sec
        [  6]   0.00-1.00   sec   896 KBytes  7.33 Mbits/sec
        [  8]   0.00-1.00   sec   384 KBytes  3.14 Mbits/sec
        [ 10]   0.00-1.00   sec   384 KBytes  3.14 Mbits/sec
        [ 12]   0.00-1.00   sec   384 KBytes  3.14 Mbits/sec
        [ 14]   0.00-1.00   sec   256 KBytes  2.10 Mbits/sec
        [ 16]   0.00-1.00   sec   896 KBytes  7.33 Mbits/sec
        [ 18]   0.00-1.00   sec   640 KBytes  5.24 Mbits/sec
        [ 20]   0.00-1.00   sec   384 KBytes  3.14 Mbits/sec
        [ 22]   0.00-1.00   sec   384 KBytes  3.14 Mbits/sec
        [SUM]   0.00-1.00   sec  4.75 MBytes  39.8 Mbits/sec
        - - - - - - - - - - - - - - - - - - - - - - - - -
        [  4]   1.00-2.00   sec   512 KBytes  4.20 Mbits/sec
        [  6]   1.00-2.00   sec  2.00 MBytes  16.8 Mbits/sec
        [  8]   1.00-2.00   sec   512 KBytes  4.20 Mbits/sec
        [ 10]   1.00-2.00   sec   128 KBytes  1.05 Mbits/sec
        [ 12]   1.00-2.00   sec   512 KBytes  4.20 Mbits/sec
        [ 14]   1.00-2.00   sec   512 KBytes  4.20 Mbits/sec
        [ 16]   1.00-2.00   sec  1.88 MBytes  15.7 Mbits/sec
        [ 18]   1.00-2.00   sec   896 KBytes  7.34 Mbits/sec
        [ 20]   1.00-2.00   sec  0.00 Bytes  0.00 bits/sec
        [ 22]   1.00-2.00   sec   256 KBytes  2.10 Mbits/sec
        [SUM]   1.00-2.00   sec  7.12 MBytes  59.8 Mbits/sec
        - - - - - - - - - - - - - - - - - - - - - - - - -
        [  4]   2.00-3.00   sec   512 KBytes  4.20 Mbits/sec
        [  6]   2.00-3.00   sec  2.00 MBytes  16.8 Mbits/sec
        [  8]   2.00-3.00   sec   768 KBytes  6.29 Mbits/sec
        [ 10]   2.00-3.00   sec   128 KBytes  1.05 Mbits/sec
        [ 12]   2.00-3.00   sec   512 KBytes  4.20 Mbits/sec
        [ 14]   2.00-3.00   sec   512 KBytes  4.20 Mbits/sec
        [ 16]   2.00-3.00   sec  1.88 MBytes  15.7 Mbits/sec
        [ 18]   2.00-3.00   sec  1.25 MBytes  10.5 Mbits/sec
        [ 20]   2.00-3.00   sec   256 KBytes  2.10 Mbits/sec
        [ 22]   2.00-3.00   sec   512 KBytes  4.20 Mbits/sec
        [SUM]   2.00-3.00   sec  8.25 MBytes  69.2 Mbits/sec
        - - - - - - - - - - - - - - - - - - - - - - - - -
        [  4]   3.00-4.00   sec   640 KBytes  5.24 Mbits/sec
        [  6]   3.00-4.00   sec  1.88 MBytes  15.7 Mbits/sec
        [  8]   3.00-4.00   sec   896 KBytes  7.34 Mbits/sec
        [ 10]   3.00-4.00   sec   384 KBytes  3.14 Mbits/sec
        [ 12]   3.00-4.00   sec   768 KBytes  6.29 Mbits/sec
        [ 14]   3.00-4.00   sec   640 KBytes  5.24 Mbits/sec
        [ 16]   3.00-4.00   sec  2.00 MBytes  16.8 Mbits/sec
        [ 18]   3.00-4.00   sec   896 KBytes  7.34 Mbits/sec
        [ 20]   3.00-4.00   sec   256 KBytes  2.10 Mbits/sec
        [ 22]   3.00-4.00   sec   640 KBytes  5.24 Mbits/sec
        [SUM]   3.00-4.00   sec  8.88 MBytes  74.4 Mbits/sec
        - - - - - - - - - - - - - - - - - - - - - - - - -
        [  4]   4.00-5.00   sec   896 KBytes  7.34 Mbits/sec
        [  6]   4.00-5.00   sec  1.88 MBytes  15.7 Mbits/sec
        [  8]   4.00-5.00   sec  1.12 MBytes  9.43 Mbits/sec
        [ 10]   4.00-5.00   sec   384 KBytes  3.14 Mbits/sec
        [ 12]   4.00-5.00   sec  1.00 MBytes  8.38 Mbits/sec
        [ 14]   4.00-5.00   sec   896 KBytes  7.34 Mbits/sec
        [ 16]   4.00-5.00   sec  1.88 MBytes  15.7 Mbits/sec
        [ 18]   4.00-5.00   sec  1.00 MBytes  8.38 Mbits/sec
        [ 20]   4.00-5.00   sec   384 KBytes  3.14 Mbits/sec
        [ 22]   4.00-5.00   sec   768 KBytes  6.29 Mbits/sec
        [SUM]   4.00-5.00   sec  10.1 MBytes  84.9 Mbits/sec
        - - - - - - - - - - - - - - - - - - - - - - - - -
        [  4]   5.00-6.00   sec  1.25 MBytes  10.5 Mbits/sec
        [  6]   5.00-6.00   sec  1.88 MBytes  15.7 Mbits/sec
        [  8]   5.00-6.00   sec  1.62 MBytes  13.6 Mbits/sec
        [ 10]   5.00-6.00   sec   640 KBytes  5.25 Mbits/sec
        [ 12]   5.00-6.00   sec  1.38 MBytes  11.5 Mbits/sec
        [ 14]   5.00-6.00   sec  1.12 MBytes  9.44 Mbits/sec
        [ 16]   5.00-6.00   sec  2.00 MBytes  16.8 Mbits/sec
        [ 18]   5.00-6.00   sec  1.25 MBytes  10.5 Mbits/sec
        [ 20]   5.00-6.00   sec   640 KBytes  5.25 Mbits/sec
        [ 22]   5.00-6.00   sec  1.00 MBytes  8.39 Mbits/sec
        [SUM]   5.00-6.00   sec  12.8 MBytes   107 Mbits/sec
        - - - - - - - - - - - - - - - - - - - - - - - - -
        [  4]   6.00-7.00   sec  1.62 MBytes  13.6 Mbits/sec
        [  6]   6.00-7.00   sec  2.00 MBytes  16.8 Mbits/sec
        [  8]   6.00-7.00   sec  1.88 MBytes  15.7 Mbits/sec
        [ 10]   6.00-7.00   sec   896 KBytes  7.34 Mbits/sec
        [ 12]   6.00-7.00   sec  1.75 MBytes  14.7 Mbits/sec
        [ 14]   6.00-7.00   sec  1.62 MBytes  13.6 Mbits/sec
        [ 16]   6.00-7.00   sec  1.88 MBytes  15.7 Mbits/sec
        [ 18]   6.00-7.00   sec  1.88 MBytes  15.7 Mbits/sec
        [ 20]   6.00-7.00   sec   768 KBytes  6.29 Mbits/sec
        [ 22]   6.00-7.00   sec  1.38 MBytes  11.5 Mbits/sec
        [SUM]   6.00-7.00   sec  15.6 MBytes   131 Mbits/sec
        - - - - - - - - - - - - - - - - - - - - - - - - -
        [  4]   7.00-8.00   sec  1.00 MBytes  8.39 Mbits/sec
        [  6]   7.00-8.00   sec  1.88 MBytes  15.7 Mbits/sec
        [  8]   7.00-8.00   sec  2.00 MBytes  16.8 Mbits/sec
        [ 10]   7.00-8.00   sec   512 KBytes  4.20 Mbits/sec
        [ 12]   7.00-8.00   sec  1.88 MBytes  15.7 Mbits/sec
        [ 14]   7.00-8.00   sec   128 KBytes  1.05 Mbits/sec
        [ 16]   7.00-8.00   sec  2.00 MBytes  16.8 Mbits/sec
        [ 18]   7.00-8.00   sec  1.88 MBytes  15.7 Mbits/sec
        [ 20]   7.00-8.00   sec   512 KBytes  4.20 Mbits/sec
        [ 22]   7.00-8.00   sec   128 KBytes  1.05 Mbits/sec
        [SUM]   7.00-8.00   sec  11.9 MBytes  99.6 Mbits/sec
        - - - - - - - - - - - - - - - - - - - - - - - - -
        [  4]   8.00-9.00   sec  1.38 MBytes  11.5 Mbits/sec
        [  6]   8.00-9.00   sec  1.88 MBytes  15.7 Mbits/sec
        [  8]   8.00-9.00   sec  1.88 MBytes  15.7 Mbits/sec
        [ 10]   8.00-9.00   sec   768 KBytes  6.29 Mbits/sec
        [ 12]   8.00-9.00   sec  1.88 MBytes  15.7 Mbits/sec
        [ 14]   8.00-9.00   sec   256 KBytes  2.10 Mbits/sec
        [ 16]   8.00-9.00   sec  1.88 MBytes  15.7 Mbits/sec
        [ 18]   8.00-9.00   sec  1.88 MBytes  15.7 Mbits/sec
        [ 20]   8.00-9.00   sec   640 KBytes  5.24 Mbits/sec
        [ 22]   8.00-9.00   sec   384 KBytes  3.14 Mbits/sec
        [SUM]   8.00-9.00   sec  12.8 MBytes   107 Mbits/sec
        - - - - - - - - - - - - - - - - - - - - - - - - -
        [  4]   9.00-10.00  sec  1.75 MBytes  14.7 Mbits/sec
        [  6]   9.00-10.00  sec  1.88 MBytes  15.7 Mbits/sec
        [  8]   9.00-10.00  sec  1.88 MBytes  15.7 Mbits/sec
        [ 10]   9.00-10.00  sec  1.00 MBytes  8.39 Mbits/sec
        [ 12]   9.00-10.00  sec  1.88 MBytes  15.7 Mbits/sec
        [ 14]   9.00-10.00  sec   384 KBytes  3.15 Mbits/sec
        [ 16]   9.00-10.00  sec  1.88 MBytes  15.7 Mbits/sec
        [ 18]   9.00-10.00  sec  1.88 MBytes  15.7 Mbits/sec
        [ 20]   9.00-10.00  sec  1.00 MBytes  8.39 Mbits/sec
        [ 22]   9.00-10.00  sec   384 KBytes  3.15 Mbits/sec
        [SUM]   9.00-10.00  sec  13.9 MBytes   116 Mbits/sec
        - - - - - - - - - - - - - - - - - - - - - - - - -
        [ ID] Interval           Transfer     Bandwidth
        [  4]   0.00-10.00  sec  9.75 MBytes  8.18 Mbits/sec                  sender
        [  4]   0.00-10.00  sec  9.70 MBytes  8.14 Mbits/sec                  receiver
        [  6]   0.00-10.00  sec  18.1 MBytes  15.2 Mbits/sec                  sender
        [  6]   0.00-10.00  sec  18.1 MBytes  15.2 Mbits/sec                  receiver
        [  8]   0.00-10.00  sec  12.9 MBytes  10.8 Mbits/sec                  sender
        [  8]   0.00-10.00  sec  12.9 MBytes  10.8 Mbits/sec                  receiver
        [ 10]   0.00-10.00  sec  5.12 MBytes  4.30 Mbits/sec                  sender
        [ 10]   0.00-10.00  sec  5.04 MBytes  4.23 Mbits/sec                  receiver
        [ 12]   0.00-10.00  sec  11.9 MBytes  9.96 Mbits/sec                  sender
        [ 12]   0.00-10.00  sec  11.8 MBytes  9.92 Mbits/sec                  receiver
        [ 14]   0.00-10.00  sec  6.25 MBytes  5.24 Mbits/sec                  sender
        [ 14]   0.00-10.00  sec  6.11 MBytes  5.12 Mbits/sec                  receiver
        [ 16]   0.00-10.00  sec  18.1 MBytes  15.2 Mbits/sec                  sender
        [ 16]   0.00-10.00  sec  18.1 MBytes  15.2 Mbits/sec                  receiver
        [ 18]   0.00-10.00  sec  13.4 MBytes  11.2 Mbits/sec                  sender
        [ 18]   0.00-10.00  sec  13.4 MBytes  11.2 Mbits/sec                  receiver
        [ 20]   0.00-10.00  sec  4.75 MBytes  3.98 Mbits/sec                  sender
        [ 20]   0.00-10.00  sec  4.65 MBytes  3.90 Mbits/sec                  receiver
        [ 22]   0.00-10.00  sec  5.75 MBytes  4.82 Mbits/sec                  sender
        [ 22]   0.00-10.00  sec  5.55 MBytes  4.66 Mbits/sec                  receiver
        [SUM]   0.00-10.00  sec   106 MBytes  88.9 Mbits/sec                  sender
        [SUM]   0.00-10.00  sec   105 MBytes  88.4 Mbits/sec                  receiver
        
        iperf Done.
        

        Running the UDP switch publicly resulted in hundreds of datagrams being received out-of-order.

        N 1 Reply Last reply Reply Quote 0
        • N
          netblues @rtw915
          last edited by

          @rtw915 Well, yes, it looks like the tunnel isn't adding anything significant. However speed does fluctuate a lot and this is probably an indication for congestion somewhere.
          Not much you can do I guess too.
          With such fluctuations, anything tcp will suffer, especially anything smb based
          7zip supports a multihread option in bzip2 format.
          Check it out. (also be careful with multithreading. It can easily saturate all your resources.
          Also robocopy supports parallel copies, (that is if you break up your file in volumes)
          Linux is better at compressing, splitting, rsyncing and decompressing, but probably introducing a new server just for that might be an overkill too.

          1 Reply Last reply Reply Quote 0
          • stephenw10S
            stephenw10 Netgate Administrator
            last edited by

            Mmm, 38Mbps doesn't seem too bad given those results though. That's close to what you see with a single stream in iperf using the optimised window size.
            Given that the tunnel itself (or even the route) doesn't support more that 80Mbps it's about what I might expect there. I'm not sure if there's any improvement to be found without changing something significant.

            Steve

            1 Reply Last reply Reply Quote 0
            • R
              rtw915
              last edited by

              @netblues I remembered why I got stuck when trying to split a single file into smaller volumes. The source does not have enough space to duplicate the file into the smaller volumes to then transfer in parallel. Is it possible to start moving the created volumes in parallel as they are created?

              @stephenw10 I agree, but it is just too slow.

              1 Reply Last reply Reply Quote 0
              • stephenw10S
                stephenw10 Netgate Administrator
                last edited by

                Higher WAN bandwidth? Faster hardware? What's it running on now?

                1 Reply Last reply Reply Quote 0
                • R
                  rtw915
                  last edited by rtw915

                  Using Mathis equation: Rate < (MSS/RTT)*(1 / sqrt(p))

                  Where:
                  MSS: maximum segment size - 1300 for IPSec overhead
                  RTT: round trip time - 90ms
                  P: Loss rate in % - .0002 seems about right I hope

                  10213764.62 bytes < (1300/.09) * (1/SQRT(.0002%))

                  10213764.62 bytes * 8 /10^6 = ~81Mbps

                  This calculator https://wintelguy.com/wanperf.pl does the Mathis equation too, and increasing the WAN bandwidth does not increase the throughput.

                  @stephenw10 We are running SYS-1019D-FRN8TP with 64GB of mem. Based on the minimal throughput difference between public and IPSec iperf tests and Mathis equation output, I don’t think it is a hardware issue. I think TCP connections need to be parallelized and/or a proxy to perform TCP ACK trickery with an optimal TCP window size. I don't know, maybe there is a third solution.

                  -Ryan

                  1 Reply Last reply Reply Quote 0
                  • R
                    rtw915
                    last edited by

                    Ok, so after a few more hours of googling I found a file transfer tool for high latency connections that seems to work great! The throughput that UFTP http://uftp-multicast.sourceforge.net/ was able to achieve almost saturated the bandwidth of the connection through the tunnel (186 Mbps)! I tested with an 8GB file.

                    The remote side (Client) I ran this:

                    uftpd -B 2250000 -L C:\temp\uftpd_log.txt -F @LOG
                    

                    On the local side (Server) this:

                    uftp -f -B 2250000 -b 1200 -R 200000 -M 10.30.20.20  "C:\temp\2-25-2021.pcapng"
                    

                    Transfer summary:

                    Transfer status:
                    Host: 0x8811096B   	Status: Completed   time: 359.405 seconds
                    Total elapsed time: 359.405 seconds
                    Overall throughput: 23350.92 KB/s
                    -----------------------------
                    Finishing group
                    Sending DONE 1.1
                    Got COMPLETE from client 0x8811096B
                    Late completions:
                    Sending DONE_CONF 2.1
                    

                    I think this solves the batch file transfer speed issue. Now the SQL team needs me to find a way to improve SQL linked server transfer rates to synchronize transactions.

                    N 1 Reply Last reply Reply Quote 3
                    • stephenw10S
                      stephenw10 Netgate Administrator
                      last edited by

                      Nice find!

                      1 Reply Last reply Reply Quote 0
                      • N
                        netblues @rtw915
                        last edited by

                        @rtw915 said in WAN optimization/acceleration:

                        Now the SQL team needs me to find a way to improve SQL linked server transfer rates to synchronize transactions.

                        This will bring you back to the initial wan accelerator solution.
                        The only other possible solution is to redesing the db subsystem, utilizing some way of sql replication, taking into consideration propagation delays

                        1 Reply Last reply Reply Quote 0
                        • First post
                          Last post
                        Copyright 2025 Rubicon Communications LLC (Netgate). All rights reserved.