[Soekris] net4801 bridging firewalls benchmarks results

Giovanni Faglioni giovanni.faglioni at gmail.com
Sat Oct 8 21:26:32 UTC 2005


2005/10/8, Jason Dixon <jason at dixongroup.net>:
> On Oct 8, 2005, at 12:34 PM, Giovanni Faglioni wrote:
> I like the idea of your tests, but why not throw up a page with
> complete results?

     We do not have a company website yet. :(
     We're in "startup mode" and our priorities are
     to get the products ready. :)

> Showing the throughput of the various systems with
> firewall enabled, but no filter rules, doesn't really give any useful
> information.

    The aim of our tests was to evaluate the speed of various
    sistems in a "best case" scenario:

    We assumed that a filter with few rules is faster than a
    more complex one. (it is possible that we guessed wrong, but
    I think that a system that processes 40Mib/sec with
    a very simple filter is very likely to be slower than that with
    more complex ones.)

    So we did not test these cases, albait we have
    no data to support this assumption.

    We just said that it was _not_ a very scientific way of doing tests... ;)

> If you're not going to use any filter rules, then at
> least have the packet filters disabled.

      We have some results for this case:

      OpenBSD is still the slower one (between 32 and 38Mib/sec, if I recall
      correctly) and Linux 2.4 goes full speed (93Mib/sec). We did not
      test Linux 2.6 and FreeBSD 6. (I assume that FreeBSD 4.9 works
      full speed. If it doesn't: enable the firewall and it will. :)

> On the other hand, I would
> be interested in seeing some numbers with "basic" real-life examples
> (say, traffic inbound to a DMZ... or traffic outbound from a LAN).

    We use a novell (to us) approach to DMZs: each and every server has
    his own one, and each DMZ has a reverse firewall that protects the
    internet _from_ the server (in addition to the usual firewall that protects
    the server from the Internet).
    We permit outbound traffic from each server in a very limited way, and
    log each and every violation of the policy.

    As an example, our webserver can talk only to our DNS servers at the
    DNS ports, to our NTP servers at the NTP ports and every other traffic
    triggers an alarm. (some icmp types are excluded, so that Path MTU
    discovery, source-quench etc. etc. do work correctly)
    The responses to the http queries are handled by the stateful inspection
    rules.

    We call this setup an "Ivory Tower".
    (well, a real Ivory Tower has some means to disable the outbound firewall
    to make maintainance possible, in a "shields-off" configuration, but that's
    another story)

    The beauty of this solution is that every oubound (from the DMZs point
    of view) policy violation is a real violation, (no more tons of junk alerts
    nobody can act upon), and the eventual {virus,worm,hacker} is caught
    at the first (denied) packet it produces.
    It also makes for a very good network documentation. :)

    We are not interested in other setups as of now, 'cause our
    resources are _very_ limited. We're a two people company. :)

> P.S.  I'm very impressed/skeptical of the FreeBSD 4.9 wire-speed
> results.

   We were too, but the results are easily replicable to anyone interested:
   it suffices to go to the m0n0bsd website (http://www.m0n0.ch, these
   '0' are numbers, not letters), grab the correct soekris CompactFlash
   image and install it.

   Our bridging firewall setup is:
sysctl net.link.ether.bridge=1
sysctl net.link.ether.bridge_cfg=sis0,sis1,sis2,sis3,sis4,sis5,sis6
sysctl net.link.ether.bridge_ipf=1
sysctl net.link.ether.ipfw=0

   Our "0 rules" ipfilter is:
#
# this is to enshure ssh access
#
pass  in  quick proto tcp  from 10.1.1.59  to 10.1.1.60 port = 22 keep state
#
# just to test that the firewall filters..
# no traffic to the Asterisk PBX
#
block in  quick on sis5 from any to 10.1.1.20

pass in  quick all
pass out quick all

   Put those rules in a file (say test-ipf.conf) and activate
   them with ipf -Fa -f ./test-ipf.conf

   The setup for netserver/netperf we used is quite simple:
   launch netserver on both PCs and use:
   netperf -H <Other_host_IPAddress> -l 60
   (one at a time) to get a bandwith estimation.

   In our tests, these estimate were quite good, id est: we experienced
   similar performances with file transfers from ramdisk to ramdisk.
   (something like 11.6MiB/sec wich is about 92.8Mib/sec)

> P.P.S.  I'm not surprised by the OpenBSD speeds;  I believe the
> OpenBSD sis driver still has issues.  I have no evidence to back this
> up, just anecdotal evidence (the maxxed out irq's, for one).

   Yes, I agree. The natsemi FreeBSD driver makes the difference,
   by switching to polling mode after a second or two of high
   irq load. OpenBSD doesn't have polling mode. Linux does,
   but I believe that it is not enabled/developed for the natsemi
   DP83815 chipset. (maybe I'm wrong, and it's easily enabled.
   If someone just knows how to do it, I'll appreciate if (s)?he does
   give some hints to us: we're still in evaluation mode)

--

   --Giovanni Faglioni



More information about the Soekris-tech mailing list