testing - How do I simulate a low bandwidth, high latency environment?


Translate

I need to simulate a low bandwidth, high latency connection to a server in order to emulate the conditions of a VPN at a remote site. The bandwidth and latency should be tweakable so I can discover the best combination in order to run our software package.


All Answers
  • Translate

    For macOS, there is the Network Link Conditioner that simulates configurable bandwidth, latency, and packet loss. It is contained in the Hardware IO Tools for Xcode. Screenshot


  • Translate

    There's an excellent writeup of setting up a FreeBSD machine to do just this - take your standard old desktop, toss in an additional NIC, and build.

    The writeup is available at http://www.freebsd.org/doc/en/articles/filtering-bridges/article.html.

    In step 5 of the above instructions, you're enabling a firewall. For just simulating a different IP connection, you could (for example) do the following:

    Create a file /etc/rc.firewall.56k which contains the following:

    ipfw add pipe 1 ip from any to any out
    ipfw add pipe 2 ip from any to any in    
    ipfw pipe 1 config bw 56Kbit/s   
    ipfw pipe 2 config bw 56Kbit/s
    

    And change /etc/rc.conf... replace the line

    firewall_type="open"
    

    with

    firewall_type="/etc/rc.firewall.56k"
    

    reboot, and you've got yourself a 56K bridge!

    If you happen to be working from a Macintosh, that OS has ipfw built into it by default. I've done the same thing by routing network traffic over the Airport and through the ethernet, setting it up so that anything coming over the airport has the same characteristics as whatever I'm trying to emulate. You can invoke the ipfw commands directly from the terminal and get the same effects.


  • Translate

    In the past, I have used a bridge using the Linux Netem (Network Emulation) functionality. It is highly configurable -- allowing the introduction of delays (the first example is for a WAN), packet loss, corruption, etc.

    EDIT: There is also the MasterShaper web interface to control the settings.

    I'm noting that Netem worked very well for my applications, but I also ended up using WANem several times. The provided bootable ISO (and virtual appliance images) made it quite handy.


  • Translate

    Charles

    I came across Charles the web debugging proxy application and had great success in emulating network latency. It works on Windows, Mac, and Linux.

    Charles on Mac

    Bandwidth throttle / Bandwidth simulator

    Charles can be used to adjust the bandwidth and latency of your Internet connection. This enables you to simulate modem conditions using your high-speed connection.

    The bandwidth may be throttled to any arbitrary bytes per second. This enables any connection speed to be simulated.

    The latency may also be set to any arbitrary number of milliseconds. The latency delay simulates the latency experienced on slower connections, that is the delay between making a request and the request being received at the other end.

    DummyNet

    You could also use vmware to run BSD or Linux and try this article (DummyNet) or this one.


  • Translate

    I found this little neat program for Windows called clumsy. It's in kind of alpha status, but it seem to work fine for me, and it's open source.

    Edit: Others have noticed that you can't limit bandwidth with clumsy, and that's true. You can only add Latency and a couple of other network related errors. This will disqualify this answer as a valid answer to the question, however since I had good use for it when I wanted to simulate a bad network so I'll leave it here as long as it has > 0 votes or similar.


  • Translate

    Try WANem

    WANem is a Wide Area Network Emulator, meant to provide a real experience of a Wide Area Network/Internet, during application development / testing over a LAN environment.


  • Translate

    For Windows you can use this application: http://www.softperfect.com/products/connectionemulator/

    WAN Connection Emulator for Windows 2000, XP, 2003, Vista, Seven and 2008.

    Perhaps the only one available for Windows.


  • Translate

    I would try using netem on linux. With it you can simulate additional delay, corruption, packet loss and duplication. It even works on the loopback device.


  • Translate

    Another client-side program (Windows only), is NetLimiter - http://www.netlimiter.com


  • Translate

    I use NetBalancer on my Windows machine.

    http://seriousbit.com/netbalancer/

    Updates on 2017-10-07: The last free version of NetBalancer is 9.2.7. The program has a hard-coded expiration date. Before you start the NetBalancer service, you need to turn back the system clock before 2016-10-18. See this article for details.


  • Translate

    Found this one for Windows using Fiddler (free solution) http://www.logic-worx.com/index.php/tools-and-apps/fiddler-connection-simulator/


  • Translate

    I guess tc could do the job on UNIX based platform.

    tc is used to configure Traffic Control in the Linux kernel
    http://lartc.org/manpages/tc.txt


  • Translate

    To simulate a low bandwidth connection for testing web sites use Google Chrome, you can go to the Network Tab in F12 Tools and select a bandwidth level to simulate or create custom bandwidth to simulate.



  • Translate

    If you're on linux, I find the Traffic Control program to be a great help for this sort of thing.


  • Translate

    There is a product from http://www.shunra.com called VE Desktop which can be used to simulate varying network conditions. It allows you to tweak latencies, bandwidth and packetloss with a simple UI. Only caveat is, its not free. Hope this helps.


  • Translate

    I've been looking for an easy to use tool for this type of testing for a while now. I just came across this the other day: Network Delay Simulator

    If you're running Windows, you should check it out. It was super easy to set up and get going, and seems to work really well. It allows you to define bandwidth, latency, and packet loss in each direction. The other really nice thing is that you can define "Flow Match Conditions" so that it only affects the traffic you want it to. Oh yeah, and it's free.


  • Translate

    i think i found what i need. maybe you can use charles proxy or slowy. hope it helps.


  • Translate

    Take a look at the NE-ONE Network Emulator which allows you to configure bandwidth, latency, packet loss, packet reordering, packet duplication, packet fragmentation, network congestion and many more impairments so that you can create real-world network conditions in the lab. Different impairments can be configured for the up and downlink so you could have a really good uplink but a really bad downlink experience, great for seeing how the app handles TCP queuing because the acks don't come back in a timely manner and the overall latency therefore increases!

    There's an overview video here http://www.youtube.com/watch?v=DwtqlE7LcrQ specifically aimed at game developers, but it shows what it's about. NE-ONE is configured using a web browser so it's really easy to get installed and configured - you don't need to be a network guru :-)

    There's a hardware version - http://www.itrinegy.com/index.php/products/network-emulators/ne-one - or you can download a Virtual Appliance (software) version that runs under VMware ESXi Server. The Virtual Appliance can be download from VMware's Solution Exchange - solutionexchange.vmware.com/store/products/ne-one-flex-network-emulator


  • Translate

    We used this software once inside of a Virtual Machine to do some bandwidth scale testing:

    http://www.softinengines.com/index.php?section=download&langu=en

    It's not free, but does have a 30 day trial.


  • Translate

    LANforge ICE is a network emulator with an emphasis on virtual routing, jitter, corruption and delay. Projects have used it to emulate satellite link, cable and modem connections, and high-speed (10Gbit) wan emulation. You can use a Java GUI to build your virtual networks and generate very detailed reports of the traffic flow. The LANforge products also provide traffic generation features: frame, ethernet, layer-3 and stateful traffic (NFS, http). Recent editions for LANforge have sophisticated WiFi testing features as well.


  • Translate

    You can try this: CovenantSQL/GNTE just write YAML like this:

    group:
      - 
        name: china
        nodes:
          - 
            ip: 10.250.1.2
            cmd: "cd /scripts && ./YourBin args"
          - 
            ip: 10.250.1.3
            cmd: "cd /scripts && ./YourBin args"
        delay: "100ms 10ms 30%"
        loss: "1% 10%"
      - 
        name: us
        nodes:
          - 
            ip: 10.250.2.2
            cmd: "cd /scripts && ./YourBin args"
          - 
            ip: 10.250.2.3
            cmd: "cd /scripts && ./YourBin args"
        delay: "1000ms 10ms 30%"
        loss: "1% 10%"
    
    network:
      -
        groups:
          - china
          - us
        delay: "200ms 10ms 1%"
        corrupt: "0.2%"
        rate: "10mbit"
    

    run ./generate scripts/your.yaml