I had a few hours to play with a hardware traffic generator today, I wanted to
try beating up my OpenBSD setup to see what kind of throughput I could get.

For the curious, I was able to pulverize it with 64 byte packets and it topped
out at about 165kpps.  Throughput was less than physical interface speed
(about 800Mbps).  For fun, I cranked the payload size up to 1500 bytes, but I
couldn't get the box to exceed 1Gbps, even though I had several gigabit
interfaces trunked together.  At first, it was a switch problem (the switch
was sending all the traffic over a single link).  However, after I found out
my switches LACP hash algorithm I was able to spread the traffic out by
randomizing the port numbers.

I then confirmed that 4Gbps of traffic was leaving the switch to the OpenBSD
box, but only 1Gbps was coming back.  Therefore, I'm guessing that the
load-balancing algorithm for OpenBSD does not behave the same way as my
Juniper switching gear.  Does anybody know the LACP hash that the trunk
interface in OpenBSD uses to load-balance the outgoing traffic?  I didn't have
time to do more than a cursory test with different port numbers and IP
addresses, so I'm not sure what I might be doing wrong, or if its even
possible to use layer 3/4 info in OpenBSD to hash the traffic.  Since I'm
using the box as a router, layer 2 hashing doesn't help me very much since the
source MAC is always the same.

I took a peek at the source, but I'm definitely not a C hacker, so nothing
jumped out at me for computing the hash...

Thanks,

Jason

--
Jason Healy    |    jhe...@logn.net    |   http://www.logn.net/

Reply via email to