openthread / ot-br-posix

OpenThread Border Router, a Thread border router for POSIX-based platforms.
https://openthread.io/
BSD 3-Clause "New" or "Revised" License
397 stars 220 forks source link

multicast is not work on network #2363

Open myddpp opened 2 weeks ago

myddpp commented 2 weeks ago

Describe the bug multicat operates only in local loop. If chip-tool and OTBR run on one device. My end device (nrf52840) receives multicast packets. and mroute set by both direction wlan0 -> wpan0 wpan0 -> wlan0

ip -6 mroute (fd5b:35de:ad5b:beef:e3a0:6290:dab7:e37a,ff35:40:fd00::100:1) Iif: wlan0 Oifs: wpan0 State: resolved (fd11:35::782d:5b46:d438:5761,ff35:40:fd00::100:1) Iif: wpan0 Oifs: wlan0 State: resolved

But If I work chip-tool in rpi4 - 1 and OTRBR running ont rpi4 - 2

only 1 mroute are add ubuntu@ubuntu:~/chip-certification-tool/scripts/OTBR$ ip -6 mroute (fd5b:35de:ad5b:beef:5c0a:7aeb:fd9c:55e1,ff35:40:fd00::100:1) Iif: wlan0 Oifs: wpan0 State: resolved

I checked tcpdump at wlan0 and wpan0. If I try on same board, I see the wlan0 and wpan0 get almost same pkt. So I guess OTBR forwarding the packet from wlan0 to wpan0.

But, If I try on rpi4 1/2, OTBR wlan0 get packet but, wpan0 isn't

I can ping from rpi4-1 to end device, I thinks connection is well. I can onoff toggle end device by unicast, connection is also well I guess "./chip-tool onoff toggle 2 1"

I tested with below command set.

./chip-tool pairing ble-thread 2  hex:0e08000000000001000035060004001fffe00708fdabbc98c27896b90c0402a0f7f800030000110102123402081111111122222222030e4f70656e54687265616444656d6f051000112233445566778899aabbccddeeff0410445f2b5ca6f2a93a55ce570a70efeecb   20202021 3840

./chip-tool accesscontrol write acl '[{"fabricIndex": 1, "privilege": 5, "authMode": 2, "subjects": [112233], "targets": null },{"fabricIndex": 1, "privilege": 4, "authMode": 3, "subjects": null, "targets": [{"cluster": 6, "endpoint": 1, "deviceType": null}, {"cluster": 8, "endpoint": 1, "deviceType": null}] }]' 2 0

./chip-tool groupkeymanagement key-set-write '{"groupKeySetID": 4, "groupKeySecurityPolicy": 0, "epochKey0": "d0d1d2d3d4d5d6d7d8d9dadbdcdddedf", "epochStartTime0": 2220000,"epochKey1": "d1d1d2d3d4d5d6d7d8d9dadbdcdddedf", "epochStartTime1": 2220001,"epochKey2": "d2d1d2d3d4d5d6d7d8d9dadbdcdddedf", "epochStartTime2": 2220002 }' 2 0
./chip-tool groupkeymanagement write group-key-map '[{"groupId": 1, "groupKeySetID": 4, "fabricIndex": 1}]' 2 0
./chip-tool groupkeymanagement read group-key-map 2 0

./chip-tool accesscontrol read acl 2 0

./chip-tool groupsettings add-group grp1      0x0001
./chip-tool groupsettings add-keysets 4  0  0x000000000021dfe0  hex:d0d1d2d3d4d5d6d7d8d9dadbdcdddedf
./chip-tool groupsettings bind-keyset 0x0001 4

./chip-tool groupsettings show-groups
./chip-tool groupsettings show-keysets

./chip-tool groups add-group 0x0001 grp1 2 1
./chip-tool onoff toggle 2 1 
./chip-tool onoff toggle 0xffffffffffff0001 1 

And I build my otbr with below config. ./script/cmake-build -DBUILD_TESTING=OFF \ -DOTBR_DBUS=ON \ -DOTBR_REST=ON \ -DOTBR_WEB=OFF \ -DOTBR_MDNS=avahi \ -DOTBR_BACKBONE_ROUTER=ON \ -DOTBR_BORDER_ROUTING=ON \ -DOTBR_SRP_ADVERTISING_PROXY=ON \ -DOTBR_BORDER_AGENT=ON \ -DOT_SPINEL_RESET_CONNECTION=ON \ -DOT_TREL=ON \ -DOT_MLR=ON \ -DOT_SRP_SERVER=ON \ -DOT_ECDSA=ON \ -DOT_SERVICE=ON \ -DOTBR_DUA_ROUTING=ON \ -DOT_DUA=ON \ -DOT_BORDER_ROUTING_NAT64=ON \ -DOTBR_DNSSD_DISCOVERY_PROXY=ON \ -DOTBR_INFRA_IF_NAME=eth0 \ -DOTBR_NO_AUTO_ATTACH=1 \ -DOT_REFERENCE_DEVICE=ON \ -DOT_DHCP6_CLIENT=ON \ -DOT_DHCP6_SERVER=ON

could you help me, how to check multicast?

To Reproduce Information to reproduce the behavior, including:

  1. Git commit id
  2. IEEE 802.15.4 hardware platform
  3. Build steps
  4. Network topology RPi4-1 ( chip-tool) <--> RPi4 2 ( OTBR ) with nrf52840 dongle <---> End device ( nrf52840DK )

Expected behavior A clear and concise description of what you expected to happen.

Console/log output If applicable, add console/log output to help explain your problem.

Additional context Add any other context about the problem here.

superwhd commented 2 weeks ago

But If I work chip-tool in rpi4 - 1 and OTRBR running ont rpi4 - 2

only 1 mroute are add ubuntu@ubuntu:~/chip-certification-tool/scripts/OTBR$ ip -6 mroute (fd5b:35de:ad5b:beef:5c0a:7aeb:fd9c:55e1,ff35:40:fd00::100:1) Iif: wlan0 Oifs: wpan0 State: resolved

Could you confirm if ping Rpi4-1 -> ED multicast group is working?

On the other hand, could you share the result of ping from ED to Rpi4-1's multicast group?

i.e. on ED run this command:

> ping <Rpi's multicast group> 100 10 1

See this codelab for some background: https://openthread.io/codelabs/openthread-border-router-ipv6-multicast#6

myddpp commented 2 weeks ago

It is not ping to Rpi4-1 -> ED multicast group addr.

But, Multicast group work well after remove all otbr-ingress-* configure

Thanks

superwhd commented 2 weeks ago

Normally otbr-ingress-* rules shouldn't drop such kind of multicast packets. Not sure what could go wrong here.