 I 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.
I 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?
Comments powered by Talkyard.