Border-router and multicast

Hi,

My set up: Linux -> board A (border router) board B (gnrc_networking)

I've set up the border router, I can ping board B by changing fe80 by 2001:db8:: inside Linux, but I used the multicast address ff02::1 to send frames to all my nodes and this does not work. How can I do that with the border router? (send frames to all my nodes from linux and not by using the shell of the border router)

Cheers,

Hi Baptiste, are you sending from your Linux host or your border router? Because ff02::1 is link-local and should not be forwarded by a border router. Try set-up a multicast address with a broader scope than link-local at your nodes, e.g.

ifconfig 7 add ff04::1

And try if that works.

Cheers, Martine

Hi Martine, Thank you for the answer. Ok ff04::1 is also a multicast address so I add it to every board with gnrc_networking and I should be able to ping them with this multicast address. Shouldn't I use: ifconfig 7 add multicast ff04::1 ?

I'm missing something here, could give me an explanation please: Before, I had a transceiver plugged on my linux so I was able to ping my board directly using fe80::address so I was able to use the local multicast address ff02::1, now that I use border router, I'm using a prefix 2001::db8 (why? and why documentation prefix?) Why can't I use fe80 as before? It's not clear in my mind so I'm not sure my question are clear as well. Thanks

because link-local ff80::/10 will not be routed, between lowpan and ethernet interface, so far I know.

I think what you want to have is the npd proxy magic stuff. See [0]. Just plugin the ethernet cable and your network will be extended with the 6LoWPAN nodes.

I need to admit, I tested the manual stuff "ip -6 neigh add proxy ..." only and never the ndppd (btw, there exists some offers to move this handling into kernelspace to make it more easier for users).

If you want to test it, please share your expierence.

- Alex

[0] https://github.com/DanielAdolfsson/ndppd

Hi Martine, Thank you for the answer. Ok ff04::1 is also a multicast address so I add it to every board with gnrc_networking and I should be able to ping them with this multicast address. Shouldn't I use: ifconfig 7 add multicast ff04::1 ?

I'm missing something here, could give me an explanation please: Before, I had a transceiver plugged on my linux so I was able to ping my board directly using fe80::address so I was able to use the local multicast address ff02::1, now that I use border router, I'm using a prefix 2001::db8 (why? and why documentation prefix?) Why can't I use fe80 as before?

because link-local ff80::/10 will not be routed, between lowpan and ethernet interface, so far I know.

ff80? You meant fe80? I was able to do ping with fe80 and lowpan0.

I think what you want to have is the npd proxy magic stuff. See [0]. Just plugin the ethernet cable and your network will be extended with the 6LoWPAN nodes.

What I want is to understand a bit better how my network works. Each node is inside the same PAN (let's say 0x23 by default on RIOT, any reason why you choose 0x23?) RIOT starts and we affect an link-local address fe80 so every RIOT node can ping another one with its link-local address. Then comes border-router, border router will tell every node to add a new ip with prefix 2001:db8::, is this right? How often does border router send a message to other node to say to add this new ip address? Why 2001:db8 has been chosen? and how should I choose this prefix if I want to use my product for commercial use?

Why can't I ping a link-local address from Linux with the border router? I've got ten nodes and one linux with a border router, what I want is to be able to send messages to each of them (or all of them by multicast) at any moment, here I don't understand why I should use global address 2001:db8 instead of fe80::

Thanks for your time,

Martine, I added ifconfig 7 add ff04::1 to board B and I couldn't ping f04::1 from Linux. Any other solution?

>> Hi Martine, >> Thank you for the answer. >> Ok ff04::1 is also a multicast address so I add it to every board with >> gnrc_networking and I should be able to ping them with this multicast >> address. >> Shouldn't I use: >> ifconfig 7 add multicast ff04::1 >> ? >> >> I'm missing something here, could give me an explanation please: >> Before, I had a transceiver plugged on my linux so I was able to ping >> my board directly using fe80::address so I was able to use the local >> multicast address ff02::1, now that I use border router, I'm using a >> prefix 2001::db8 (why? and why documentation prefix?) Why can't I use >> fe80 as before? > > because link-local ff80::/10 will not be routed, between lowpan and > ethernet interface, so far I know.

ff80? You meant fe80? I was able to do ping with fe80 and lowpan0.

yep.

> > I think what you want to have is the npd proxy magic stuff. See [0]. > Just plugin the ethernet cable and your network will be extended with > the 6LoWPAN nodes.

What I want is to understand a bit better how my network works. Each node is inside the same PAN (let's say 0x23 by default on RIOT, any reason why you choose 0x23?) RIOT starts and we affect an link-local address fe80 so every RIOT node can ping another one with its link-local address. Then comes border-router, border router will tell every node to add a new ip with prefix 2001:db8::, is this right?

For this you need radvd [0] which sends RA with PIO (prefix information option).

How often does border router send a message to other node to say to add this new ip address?

depends on setting. Normally RA is a responds according to RS. RA can also be transmitted periodically.

Why 2001:db8 has been chosen? and how should I choose this prefix if I want to use my product for commercial use?

Why can't I ping a link-local address from Linux with the border router?

Because fe80::/10 address scope will not be routed, you could do that I think with the ndp proxy stuff. If you simple want to extend your ethernet IPv6 network with the 6LoWPAN nodes, then I suppose ndp proxy can do that.

I've got ten nodes and one linux with a border router, what I want is to be able to send messages to each of them (or all of them by multicast) at any moment, here I don't understand why I should use global address 2001:db8 instead of fe80::

Because global addresses will be routed and are global? :slight_smile:

local is local in your network and global can be accessed from "outside" and with "outside" I mean the internet, that's maybe the reason why link-local will not be routed.

With a border router, you need to route from one IPv6 interface to another IPv6 interface and link-local will not be routed over that.

NDP proxy is so far I know something where you can extend the network from one IPv6 interface to another IPv6 interface but it's more some tricky stuff to do this and maybe not everything is implemented what you need.

Thanks for your time,

I hope I could help you.

- Alex

[0] GitHub - linux-wpan/radvd at 6lowpan

Hi,

>> Hi Martine, >> Thank you for the answer. >> Ok ff04::1 is also a multicast address so I add it to every board with >> gnrc_networking and I should be able to ping them with this multicast >> address. >> Shouldn't I use: >> ifconfig 7 add multicast ff04::1 >> ? >> >> I'm missing something here, could give me an explanation please: >> Before, I had a transceiver plugged on my linux so I was able to ping >> my board directly using fe80::address so I was able to use the local >> multicast address ff02::1, now that I use border router, I'm using a >> prefix 2001::db8 (why? and why documentation prefix?) Why can't I use >> fe80 as before? > > because link-local ff80::/10 will not be routed, between lowpan and > ethernet interface, so far I know.

ff80? You meant fe80? I was able to do ping with fe80 and lowpan0.

Sorry, I think I misunderstood here something completely.

Your setup what is it?

Linux (802.15.4/6LoWPAN) <-> RIOT

or

Linux -> TAP (ethernet) <-> RIOT BORDER ROUTER <-> RIOT

You say something with lowpan0 then I think it's the first one, but I am not sure now and confused. :slight_smile:

It's a important information, if it's the second one then better completely ignore what I said before, because I don't know how this works exactly.

- Alex

Thanks Alex for your answer.

Hi,

>> Hi Martine, >> Thank you for the answer. >> Ok ff04::1 is also a multicast address so I add it to every board with >> gnrc_networking and I should be able to ping them with this multicast >> address. >> Shouldn't I use: >> ifconfig 7 add multicast ff04::1 >> ? >> >> I'm missing something here, could give me an explanation please: >> Before, I had a transceiver plugged on my linux so I was able to ping >> my board directly using fe80::address so I was able to use the local >> multicast address ff02::1, now that I use border router, I'm using a >> prefix 2001::db8 (why? and why documentation prefix?) Why can't I use >> fe80 as before? > > because link-local ff80::/10 will not be routed, between lowpan and > ethernet interface, so far I know.

ff80? You meant fe80? I was able to do ping with fe80 and lowpan0.

Sorry, I think I misunderstood here something completely.

Your setup what is it?

Linux (802.15.4/6LoWPAN) <-> RIOT

I used this and I was able to ping6 -I lowpan0 fe80:: but now I use second one

or

Linux -> TAP (ethernet) <-> RIOT BORDER ROUTER <-> RIOT

Now my setup is like this, yes and so what you explain make sense for the RIOT border router, they do what you explain but with RIOT instead of Linux :slight_smile:

My last question is how to send multicast information from Linux to my local network? What Martine tell me to try did not work

Hi Baptiste, since IEEE 802.15.4 itself is not a multicast medium (it only supports broadcast), and we don’t have MLD implemented at this point (which configures routers for multicast), multicast is indeed tricky at the moment. Let me try something out and I come back to you.

Cheers, Martine

Ok Martine, Have you found any solution yet?

Sorry, was (and still am) otherwise occupied. Will look into it tonight, tomorrow at the latest though.

Regards, Martine

Ok Martine,

In the start_network.sh, create_tap(), you route ip route add ${PREFIX} via fe80::2 dev ${TAP} Ok so if I want multicast, I should add ip route add ff04::1/64 via fe80::2 dev ${TAP} But it does not work

Hi Baptist,

First of all, sorry for the late reply.

Hi again,

Hey,

Hi,

Martine, what I want: My set up:

Linux + RIOT BORDER ROUTER|

RIOT gnrc_networking A| RIOT gnrc_networking B| RIOT gnrc_networking C| RIOT gnrc_networking D|

I run a program on Linux which sends some UDP data to A B C D nodes. I want to use multicast in my program instead of one board by one bard Is it clearer?

Cheers,

Hi Baptiste, yeah in that case multicast seems like the best thing to go. But how about using an actual global address then: (ff:1e::1 e.g.; 10 flag = non-permanent, e scope = global). With the hint by Kaspar I was able to get the pings through the interface, but apparently the border router does not forward the address. Will investigate.

Cheers, Martine

1 Like

Hi,

Ah the problem seems to be that for some reason Linux elects a link-local address for the ping, which is of course due to the fact, that there is no global address assigned to the interface and that the hop limit seems to be set to short (it is 1). So I did the following

sudo ip route add ff1e::/16 dev tap0 table local # add routing entry for ff1e::1

sudo ip addr add affe::dc53:7dff:fe99:516e/64 dev tap0 # add global unicast address for tap0

ping6 -t 2 ff1e::1 # ping with hop limit 2

Now I get one reply back, and if you add affe::/64 to the fib of the border router the ethos interface (wasn’t able to test that) it should work.

Cheers, Martine

1 Like

Thanks Martine, I will try tomorrow