Hi all, 

I want to build a mesh network that uses both wired and wireless backhaul with 
Batman-adv like this:
```
   Router A             Router B                Router C
_____________     ___________________       ________________
|    br-lan    |      |         br-lan        |      |     br-lan         |
|____________|     |__________________|      |________________|
|AP|   bat0  |     |AP|      bat0          |      |AP|     bat0      |
|___|________|     |___|_______________|      |___|____________|
   |lan|BHAP|         |STA| lan | BHAP|           |STA| BHAP |
   |___|______|         |____|_____|______|           |____|_______|
     ^     ^----WiFi--^     ^      ^-----WiFi---^
      |______Eth_Cable_____|  
```

Router A and Router B are connected together by both wireless link (upstream 
router runs an AP mode interface while the downstream router runs an STA 
associating to the AP) and an ethernet cable. Router B and Router C are only 
connected by Wi-Fi.

According to the document 
(https://www.open-mesh.org/projects/batman-adv/wiki/Quick-start-guide#Mixing-non-BATMAN-systems-with-batman-adv)
 and figures in 
(https://www.open-mesh.org/projects/batman-adv/wiki/Wiki#Layer-2-), I think 
this would be a common configuration, however it doesn't work correctly in my 
setup. 

-----------------------------------

Problem description:

Router A (192.168.6.1) and Router B (192.168.6.2) can ping each other. The 
client (192.168.6.192) associating with Router B cannot ping Router A and its 
associating client.
I also wrote some simple rules to trace the data frames in each router, below 
is the output for a ping from client associating with Router B (192.168.6.2) to 
Router A (192.168.6.1):

```
# Trace info on Router B (192.168.6.2)
root@ImmortalWrt:~# dmesg -c
[ 8633.614104] PREROUTING_ICMP: IN=ra1 OUT= 
MAC=90:15:64:00:0b:ff:90:de:80:07:24:7b:08:00 SRC=192.168.6.192 DST=192.168.6.1 
LEN=84 TOS=0x00 PREC=0x00 TTL=64 ID=3060 DF PROTO=ICMP TYPE=8 CODE=0 ID=58728 
SEQ=1
[ 8633.632366] FORWARD_ICMP: IN=ra1 OUT=bat0 
MAC=90:15:64:00:0b:ff:90:de:80:07:24:7b:08:00 SRC=192.168.6.192 DST=192.168.6.1 
LEN=84 TOS=0x00 PREC=0x00 TTL=64 ID=3060 DF PROTO=ICMP TYPE=8 CODE=0 ID=58728 
SEQ=1
[ 8633.650709] POSTROUTING_ICMP: IN= OUT=bat0 SRC=192.168.6.192 DST=192.168.6.1 
LEN=84 TOS=0x00 PREC=0x00 TTL=64 ID=3060 DF PROTO=ICMP TYPE=8 CODE=0 ID=58728 
SEQ=1
[ 8633.729794] PREROUTING_ICMP: IN=bat0 OUT= 
MAC=90:de:80:07:24:7b:90:15:64:00:0b:ff:08:00 SRC=192.168.6.1 DST=192.168.6.192 
LEN=84 TOS=0x00 PREC=0x00 TTL=64 ID=39290 PROTO=ICMP TYPE=0 CODE=0 ID=58728 
SEQ=1

##============= HERE the problem happens, not forwarding the ICMP reply to ra1

[ 8634.644973] PREROUTING_ICMP: IN=ra1 OUT= 
MAC=90:15:64:00:0b:ff:90:de:80:07:24:7b:08:00 SRC=192.168.6.192 DST=192.168.6.1 
LEN=84 TOS=0x00 PREC=0x00 TTL=64 ID=3171 DF PROTO=ICMP TYPE=8 CODE=0 ID=58728 
SEQ=2
[ 8634.663238] FORWARD_ICMP: IN=ra1 OUT=bat0 
MAC=90:15:64:00:0b:ff:90:de:80:07:24:7b:08:00 SRC=192.168.6.192 DST=192.168.6.1 
LEN=84 TOS=0x00 PREC=0x00 TTL=64 ID=3171 DF PROTO=ICMP TYPE=8 CODE=0 ID=58728 
SEQ=2
[ 8634.681573] POSTROUTING_ICMP: IN= OUT=bat0 SRC=192.168.6.192 DST=192.168.6.1 
LEN=84 TOS=0x00 PREC=0x00 TTL=64 ID=3171 DF PROTO=ICMP TYPE=8 CODE=0 ID=58728 
SEQ=2
[ 8634.760652] PREROUTING_ICMP: IN=bat0 OUT= 
MAC=90:de:80:07:24:7b:90:15:64:00:0b:ff:08:00 SRC=192.168.6.1 DST=192.168.6.192 
LEN=84 TOS=0x00 PREC=0x00 TTL=64 ID=39376 PROTO=ICMP TYPE=0 CODE=0 ID=58728 
SEQ=2

===================================
# Trace info on Router A (192.168.6.1)
root@ImmortalWrt:~# dmesg -c
[ 8636.392669] PREROUTING_ICMP: IN=bat0 OUT= 
MAC=90:15:64:00:0b:ff:90:de:80:07:24:7b:08:00 SRC=192.168.6.192 DST=192.168.6.1 
LEN=84 TOS=0x00 PREC=0x00 TTL=64 ID=3060 DF PROTO=ICMP TYPE=8 CODE=0 ID=58728 
SEQ=1
[ 8636.411042] INPUT_ICMP: IN=bat0 OUT= 
MAC=90:15:64:00:0b:ff:90:de:80:07:24:7b:08:00 SRC=192.168.6.192 DST=192.168.6.1 
LEN=84 TOS=0x00 PREC=0x00 TTL=64 ID=3060 DF PROTO=ICMP TYPE=8 CODE=0 ID=58728 
SEQ=1
[ 8636.429048] OUTPUT_ICMP: IN= OUT=bat0 SRC=192.168.6.1 DST=192.168.6.192 
LEN=84 TOS=0x00 PREC=0x00 TTL=64 ID=39290 PROTO=ICMP TYPE=0 CODE=0 ID=58728 
SEQ=1
[ 8636.442859] POSTROUTING_ICMP: IN= OUT=bat0 SRC=192.168.6.1 DST=192.168.6.192 
LEN=84 TOS=0x00 PREC=0x00 TTL=64 ID=39290 PROTO=ICMP TYPE=0 CODE=0 ID=58728 
SEQ=1
[ 8637.423525] PREROUTING_ICMP: IN=bat0 OUT= 
MAC=90:15:64:00:0b:ff:90:de:80:07:24:7b:08:00 SRC=192.168.6.192 DST=192.168.6.1 
LEN=84 TOS=0x00 PREC=0x00 TTL=64 ID=3171 DF PROTO=ICMP TYPE=8 CODE=0 ID=58728 
SEQ=2
[ 8637.441904] INPUT_ICMP: IN=bat0 OUT= 
MAC=90:15:64:00:0b:ff:90:de:80:07:24:7b:08:00 SRC=192.168.6.192 DST=192.168.6.1 
LEN=84 TOS=0x00 PREC=0x00 TTL=64 ID=3171 DF PROTO=ICMP TYPE=8 CODE=0 ID=58728 
SEQ=2
[ 8637.459891] OUTPUT_ICMP: IN= OUT=bat0 SRC=192.168.6.1 DST=192.168.6.192 
LEN=84 TOS=0x00 PREC=0x00 TTL=64 ID=39376 PROTO=ICMP TYPE=0 CODE=0 ID=58728 
SEQ=2
[ 8637.473708] POSTROUTING_ICMP: IN= OUT=bat0 SRC=192.168.6.1 DST=192.168.6.192 
LEN=84 TOS=0x00 PREC=0x00 TTL=64 ID=39376 PROTO=ICMP TYPE=0 CODE=0 ID=58728 
SEQ=2
```

-----------------------------------
Other related information:

On Router A:
```
root@ImmortalWrt:~# ./batctl n
[B.A.T.M.A.N. adv 2025.0-dirty, MainIF/MAC: rax0/90:15:64:00:0b:ee 
(bat0/22:b8:04:c2:f2:f8 BATMAN_V)]
IF             Neighbor              last-seen
90:15:64:00:0b:f7    0.140s (     1000.0) [      lan4]
9a:15:64:00:0b:f8    0.172s (        1.0) [      rax0]

root@ImmortalWrt:~# ip neigh
192.168.6.2 dev br-lan lladdr 90:15:64:00:0b:f1 ref 1 used 0/0/0 probes 1 
REACHABLE
192.168.6.3 dev br-lan lladdr 90:15:64:00:0b:b8 used 0/0/0 probes 4 STALE
192.168.6.4 dev br-lan lladdr 90:15:64:00:0b:f6 used 0/0/0 probes 1 STALE
192.168.6.112 dev br-lan  used 0/0/0 probes 3 FAILED
192.168.6.193 dev br-lan  used 0/0/0 probes 6 FAILED
192.168.6.192 dev br-lan lladdr 90:de:80:07:24:7b ref 1 used 0/0/0 probes 1 
DELAY

root@ImmortalWrt:~# brctl showstp br-lan
br-lan
bridge id              7fff.901564000bff
designated root        7fff.901564000bff
root port                 0                    path cost                  0
max age                  10.00                 bridge max age            10.00
hello time                1.00                 bridge hello time          1.00
forward delay             8.00                 bridge forward delay       8.00
ageing time             300.00
hello timer               0.00                 tcn timer                  0.00
topology change timer     0.00                 gc timer                  55.93
flags

bat0 (7)
port id                8007                    state                forwarding
designated root        7fff.901564000bff       path cost                100
designated bridge      7fff.901564000bff       message age timer          0.00
designated port        8007                    forward delay timer        0.00
designated cost           0                    hold timer                 0.00
flags

rax2 (5)
port id                8005                    state                forwarding
designated root        7fff.901564000bff       path cost                100
designated bridge      7fff.901564000bff       message age timer          0.00
designated port        8005                    forward delay timer        0.00
designated cost           0                    hold timer                 0.00
flags
hairpin mode              1

lan2 (2)
port id                8002                    state                  disabled
designated root        7fff.901564000bff       path cost                100
designated bridge      7fff.901564000bff       message age timer          0.00
designated port        8002                    forward delay timer        0.00
designated cost           0                    hold timer                 0.00
flags

rax1 (4)
port id                8004                    state                forwarding
designated root        7fff.901564000bff       path cost                100
designated bridge      7fff.901564000bff       message age timer          0.00
designated port        8004                    forward delay timer        0.00
designated cost           0                    hold timer                 0.00
flags
hairpin mode              1

ra0 (3)
port id                8003                    state                forwarding
designated root        7fff.901564000bff       path cost                100
designated bridge      7fff.901564000bff       message age timer          0.00
designated port        8003                    forward delay timer        0.00
designated cost           0                    hold timer                 0.00
flags
hairpin mode              1

lan3 (6)
port id                8006                    state                  disabled
designated root        7fff.901564000bff       path cost                100
designated bridge      7fff.901564000bff       message age timer          0.00
designated port        8006                    forward delay timer        0.00
designated cost           0                    hold timer                 0.00
flags

lan1 (1)
port id                8001                    state                forwarding
designated root        7fff.901564000bff       path cost                  4
designated bridge      7fff.901564000bff       message age timer          0.00
designated port        8001                    forward delay timer        0.00
designated cost           0                    hold timer                 0.00
flags
```


On Router B:
```
root@ImmortalWrt:~# ./batctl n
[B.A.T.M.A.N. adv 2025.0-dirty, MainIF/MAC: apclix0/9a:15:64:00:0b:f8 
(bat0/be:45:5c:1c:71:8f BATMAN_V)]
IF             Neighbor              last-seen
90:15:64:a0:0b:ec    0.424s (     1000.0) [      lan3]
9a:15:64:00:0b:b9    0.272s (        1.0) [      rax0]
90:15:64:00:0b:ee    0.456s (        1.0) [   apclix0]

root@ImmortalWrt:~# ip neigh
192.168.6.3 dev br-lan  used 0/0/0 probes 6 FAILED
192.168.6.4 dev br-lan lladdr 90:15:64:00:0b:f6 used 0/0/0 probes 1 STALE
192.168.6.1 dev br-lan lladdr 90:15:64:00:0b:ff used 0/0/0 probes 1 STALE
192.168.6.193 dev br-lan  used 0/0/0 probes 6 FAILED
192.168.6.192 dev br-lan lladdr 90:de:80:07:24:7b ref 1 used 0/0/0 probes 1 
DELAY

root@ImmortalWrt:~# brctl showstp br-lan
br-lan
bridge id              7fff.901564000bf1
designated root        7fff.901564000bf1
root port                 0                    path cost                  0
max age                  10.00                 bridge max age            10.00
hello time                1.00                 bridge hello time          1.00
forward delay             8.00                 bridge forward delay       8.00
ageing time             300.00
hello timer               0.00                 tcn timer                  0.00
topology change timer     0.00                 gc timer                  54.47
flags

bat0 (4)
port id                8004                    state                forwarding
designated root        7fff.901564000bf1       path cost                100
designated bridge      7fff.901564000bf1       message age timer          0.00
designated port        8004                    forward delay timer        0.00
designated cost           0                    hold timer                 0.00
flags

rax2 (8)
port id                8008                    state                forwarding
designated root        7fff.901564000bf1       path cost                100
designated bridge      7fff.901564000bf1       message age timer          0.00
designated port        8008                    forward delay timer        0.00
designated cost           0                    hold timer                 0.00
flags
hairpin mode              1

ra1 (6)
port id                8006                    state                forwarding
designated root        7fff.901564000bf1       path cost                100
designated bridge      7fff.901564000bf1       message age timer          0.00
designated port        8006                    forward delay timer        0.00
designated cost           0                    hold timer                 0.00
flags
hairpin mode              1

lan2 (2)
port id                8002                    state                  disabled
designated root        7fff.901564000bf1       path cost                100
designated bridge      7fff.901564000bf1       message age timer          0.00
designated port        8002                    forward delay timer        0.00
designated cost           0                    hold timer                 0.00
flags

rax1 (7)
port id                8007                    state                forwarding
designated root        7fff.901564000bf1       path cost                100
designated bridge      7fff.901564000bf1       message age timer          0.00
designated port        8007                    forward delay timer        0.00
designated cost           0                    hold timer                 0.00
flags
hairpin mode              1

ra0 (5)
port id                8005                    state                forwarding
designated root        7fff.901564000bf1       path cost                100
designated bridge      7fff.901564000bf1       message age timer          0.00
designated port        8005                    forward delay timer        0.00
designated cost           0                    hold timer                 0.00
flags
hairpin mode              1

lan1 (1)
port id                8001                    state                  disabled
designated root        7fff.901564000bf1       path cost                100
designated bridge      7fff.901564000bf1       message age timer          0.00
designated port        8001                    forward delay timer        0.00
designated cost           0                    hold timer                 0.00
flags
```

Thank you so much in advance!

Best regards,
Jingwei 

Reply via email to