How To Make The EFF ISP Throttling Tool Work On Leopard

Switzerland LogoI love the idea of Switzerland, the new EFF tool for checking ISP throttling; unfortunately as of release Zero.0.5, Leopard seems to still be a mere afterthought. Here is how I worked around the few things that were not working out of the box.

First, Switzerland is written in Python and will require Psyco. It’s a good thing since Psyco is all about performance. If you do not have it already installed:

svn co http://codespeak.net/svn/psyco/dist/ psyco-dist
cd psyco-dist/
sudo python setup.py install
cd ..

Download Switzerland from https://sourceforge.net/project/showfiles.php?group_id=233013
Extract it and change to its directory; eg

tar zxvf switzerland-0.0.5.tgz
cd switzerland-0.0.5

The FastCollector provided doesn’t work. So…

rm bin/FastCollector.darwin

Now when we build FastCollector, it will be available in /usr/local/bin/FastCollector

Here comes the only moderately scary thing for non-developers. Use the patch command to modify switzerland/client/PacketListener.py. This is the input for patch:

diff --git a/switzerland/client/PacketListener.py b/switzerland/client/PacketListener.py
index 211b68f..dc0bbcc 100755
--- a/switzerland/client/PacketListener.py
+++ b/switzerland/client/PacketListener.py
@@ -93,8 +93,7 @@ class PacketListener(threading.Thread):
         p = platform.system()
         # Implementing the recommendations from
         # http://www.net.t-labs.tu-berlin.de/research/hppc/
-        if p[-3:] == "BSD" or p == "Darwin":
-          print p
+        if p[-3:] == "BSD":
           cmd = ["sysctl","-w","net.bpf.bufsize=10485760"]
           try:     # Recent FreeBSDs
             proc = Popen(cmd, stdin=PIPE, stdout=PIPE)
@@ -110,6 +109,14 @@ class PacketListener(threading.Thread):
             proc = Popen(cmd, stdin=PIPE, stdout=PIPE)
             assert proc.wait() == 0
 
+        elif p == "Darwin":
+          cmd = ["sysctl","-w","debug.bpf_bufsize=10485760"]
+          proc = Popen(cmd, stdin=PIPE, stdout=PIPE)
+          assert proc.wait() == 0
+          cmd[2] = "debug.bpf_maxbufsize=10485760"
+          proc = Popen(cmd, stdin=PIPE, stdout=PIPE)
+          assert proc.wait() == 0
+
         elif p == "Linux":
           vars = [("/proc/sys/net/core/rmem_default", "33554432"),
                   ("/proc/sys/net/core/rmem_max", "33554432"),

Let’s build and install everything:

sudo python setup.py install

Well, it was easy (if it worked!)

Let’s create a log directory for Switzerland:

sudo mkdir /var/log/switzerland-pcaps
sudo chmod a+wx /var/log/switzerland-pcaps

And finally let’s run it:

sudo switzerland-client

or if you wish to run your own server (you need to advertise it too!)

sudo switzerland-client --server yourserveraddress

Questions?

If you enjoyed this post, make sure you subscribe to my RSS feed!

Similar Posts:

There are currently no comments highlighted.

If you enjoyed this post, please consider to leave a comment or subscribe to the feed and get future articles delivered to your feed reader.

Comments

[...] How To Make The EFF ISP Throttling Tool Work On Leopard Posted by root 2 hours 15 minutes ago (http://nexus.zteo.com) Aug 2 2008 if you enjoyed this post please consider to leave a comment or subscribe to the powered by wordpress wp premium theme by wp remix Discuss  |  Bury |  News | How To Make The EFF ISP Throttling Tool Work On Leopard [...]

Leave a comment

(required)

(required)