Take the 2-minute tour ×
Ask Different is a question and answer site for power users of Apple hardware and software. It's 100% free, no registration required.

What's a good software solution to slow down internet connections on the mac for testing and simulations?

My primary need is when testing code in the iPhone / iOS simulator, so slowing down the connection for specific applications or processes would be great.

share|improve this question

8 Answers 8

up vote 90 down vote accepted

Apple has made a very handy official tool to slow down the network connections on you Mac for testing purposes.

The Network Link Conditioner preference is a free download from within Xcode (for Lion and later OS). Additionally, iOS has similar function accessible from within Xcode and iOS 6 or later.

enter image description here

Older versions of Xcode before version 4.3.2 embedded a copy of this tool. Now, you use Xcode to download it directly in a similar manner to the iOS simulators and developer documentation.

There are 11 built in profiles from a Lossy Edge network with 400ms delay to a cable modem. If you need other limits, you can create custom profiles with your own settings or you can also use ipfw yourself as described in Craig Hockenberry's article slow ride, make it easy It also mentions the Speed Limit panel by Mike Schrag that is a smaller download than Xcode, but has fewer options than Apple's tool.

It slows down the entire network stack, so you can't throttle on a per app basis without doing things like install lion in a virtual machine and set that VM with a throttled stack.

share|improve this answer
1  
:O I even have Xcode and didn't know about this –  XAleXOwnZX Sep 4 '11 at 1:36
8  
Be sure to shut it off after you're done testing! –  Jason Salaz Sep 6 '11 at 18:51
2  
Speed Limit mentioned below works excellently. I'm using it now for localhost:8888 on MAMP. –  Anriëtte Myburgh Apr 22 '12 at 23:27
1  
Also note that iOS 6 has the network link conditioner for testing on the device. Access it via Settings->Developer under the "Network Link Conditioner" section. –  Mike Weller Nov 21 '12 at 16:42
1  
Now I can experience a simulation of what StarCraft II is like over dial up! The lag in multiplayer leads me to believe that it's a common occurrence. –  XAleXOwnZX Jun 27 '13 at 14:04

If you only need throttling for Web development, I can wholeheartedly recommend Charles. It's an excellent tool for debugging HTTP applications anyway, and among its many features, it's got a Throttle option. The software isn't cheap, but it does an excellent job.

share|improve this answer
    
I actually need it for the iPhone simulator.. and testing connections to a server –  Patrick Sep 3 '11 at 18:33

Speed Limit is a System Preferences pane for intentionally and selectively slowing down specific ports and domains.

share|improve this answer
    
I like that it's more granular than the XCode tool mentioned in the accepted answer. Thanks for the suggestion. –  sholsinger Sep 8 '11 at 18:42
1  
Thanks, this works REALLY great for localhost. –  Anriëtte Myburgh Apr 22 '12 at 23:28
1  
Really, I found that "localhost" didn't work, switching to ip address 127.0.0.1 did the trick. –  OlliM Jan 2 at 11:31

You can also use ipfw piping to slow down your network.

First, setup a virtual "pipe" to limit throughput to 800KBit/sec:

ipfw pipe 1 config bw 800Kbit

Then you can setup rules to push traffic through that pipe (pipe 1). (ports 6881-6890 being bittorrent traffic)

ipfw add 10 pipe 1 tcp from any to me 6881-6890
ipfw add 11 pipe 1 tcp from any 6881-6890 to me

Here's another example to limit traffic down to 10Kbit/sec from a specific IP address:

ipfw pipe 2 config bw 10Kbit
ipfw add 15 pipe 2 ip from me to 64.81.84.114

(Source)

share|improve this answer

OSX provides ipfw to define custom firewall rules. Using this tool you can create a pipe with limited bandwidth.

  1. Create a pipe "1" limited to 500KBytes/s via

    sudo ipfw pipe 1 config bw 500KByte/s
    
  2. Guide all network traffic of port 80 through pipe "1" using

    sudo ipfw add 1 pipe 1 src-port 80
    
  3. When you don't need the pipe anymore, remove it from the port using

    sudo ipfw delete 1
    

Other

  • If you want to set higher traffic barriers, you can use MByte/s
  • Port 80: standard port for unencrypted http traffic. This port is used for most browsing and downloading. You should be fine with this in most cases.
  • Port 443: standard port for SSL encrypted https traffic.
share|improve this answer
    
+1 for automation. –  janmoesen Mar 29 '12 at 20:28
    
unfortunately, ipfw was removed in OS X 10.10 Yosemite –  igo Nov 12 at 11:21

If your xcode 4.2.x deleted your /Developer then you can download it again by

Xcode > Open Developer Tool > More Developer Tools

share|improve this answer

I think u need to have DNS configration check tutorial from here

share|improve this answer
1  
Slowing down DNS resolution is a very bad way to simulate a slow internet connection. Not only do most routers cache DNS results, the system also caches these results so you would only be slowing the initial connection to a new computer - and not the traffic being sent back/forth once the simulation is up and running. –  bmike Dec 29 '12 at 14:55

To add to the accepted answer: it looks like you shouldn't need XCode, just an account at the Apple Developer website (simpler than first downloading the 2GB XCode package if you don't have it already).

Go to https://developer.apple.com/downloads and search for "Network Link Conditioner" or "Hardware IO Tools for XCode", the latter being the name of the package it's found in.

share|improve this answer
1  
Welcome to Ask Different! Instead of writing an answer to edit someone else's answer, simply click the edit or improve this answer button below the post that you wish to improve. –  grgarside Dec 17 '13 at 18:08

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.