MESH: batman-adv vs bmx6

I have been used BMX6 for more than 3 years already as Quick Mesh Project (qMp). So, now I matured to create my own firmware and I thought that batman-adv will be my next try, but...

batman-adv shows slower throughput than bmx6 even though batman-adv is a kernel module.

The first test is the BMX6:

# netperf -j -l 60 -c -C -H 10.60.1.1
MIGRATED TCP STREAM TEST from 0.0.0.0 (0.0) port 0 AF_INET to 10.60.1.1 (10.) port 0 AF_INET : demo
Recv   Send    Send                          Utilization       Service Demand
Socket Socket  Message  Elapsed              Send     Recv     Send    Recv
Size   Size    Size     Time     Throughput  local    remote   local   remote
bytes  bytes   bytes    secs.    10^6bits/s  % S      % S      us/KB   us/KB

 87380  16384  16384    60.04        66.92   88.44    92.04    108.274  112.679 

The second test is the batman-adv between the same couple of nodes through straight ethernet link:

# netperf -j -l 60 -c -C -H 172.16.58.1
MIGRATED TCP STREAM TEST from 0.0.0.0 (0.0) port 0 AF_INET to 172.16.58.1 (172) port 0 AF_INET : demo
Recv   Send    Send                          Utilization       Service Demand
Socket Socket  Message  Elapsed              Send     Recv     Send    Recv
Size   Size    Size     Time     Throughput  local    remote   local   remote
bytes  bytes   bytes    secs.    10^6bits/s  % S      % S      us/KB   us/KB

 87380  16384  16384    60.02        49.19   96.25    77.87    160.315  129.707 

Both networks act on different vlans.

Well, why? And could batman-adv be tweakable?

I am not super clear about this, but for what I understand you are comparing things that are different beasts all-together.
batman-adv is a layer2 mesh protocol, so when using it you end up with one single broadcast domain, and it behaves as all devices are connected to a single ethernet switch.
bmx6 (and any other layer3 mesh protocol) works at the routing level, modifying the routing table.

I feel that if the network is stable, a bmx6 (or even without any mesh protocol, just bare stable routing tables) would be as performant as bare metal.
There is an overhead that both bmx6 and batman-adv have in relation of exchanging control packages (AFAIK).

I would also check CPU usage, you can add it to the netperf... there might be something of the sorts there...

Anyway, those are my 2 cents.

1 Like