Bridge border router and 6LowPan interfaces

Hello everyone, just one thought about border-routers from a newbie: Why not using embedded boards like Raspberry Pi for this purpose. Everything from the software stack side is available (bridging in every direction) and if you use a Pi Zero it will not cost much more than 20$. Wouldn't the development resources be better invested in supporting more platforms and drivers? I see the excellence of RIOT on the sensor side, where you can really use small footprint devices to achieve really power-efficient sensor solutions. What is the real advantage of a RIOT border router (exept power consumption and maybe a better price if you make an embedded design for high volume boards)? I know this question is a little bit heretical but I want to know your thoughts about this topic. Best regards Bernhard

Hi Bernhard, we actually use this setup for testing of interoperability [1] but there are a few issues:

* Linux doesn't have full 6LoWPAN support yet (I never created the setup myself but only used a pre-setup Raspberry Pi, but as far as I know you still need to compile the kernel yourself) * Linux doesn't support 6LoWPAN-ND yet

Also I don't know much about RPL on the Linux side, which you would need because usually the border router would take the position of the RPL root in a WPAN.

Cheers, Martine

[1] https://github.com/RIOT-OS/RIOT/wiki/How-to-install-6LoWPAN-Linux-Kernel-on-Raspberry-Pi

just one thought about border-routers from a newbie: Why not using embedded boards like Raspberry Pi for this purpose. Everything from the software stack side is available (bridging in every direction) and if you use a Pi Zero it will not cost much more than 20$.

Sure. Like described here (a newer guide) [1] and here (a bit older) [2].

Wouldn't the development resources be better invested in supporting more platforms and drivers? I see the excellence of RIOT on the sensor side, where you can really use small footprint devices to achieve really power-efficient sensor solutions. What is the real advantage of a RIOT border router (exept power consumption and maybe a better price if you make an embedded design for high volume boards)? I know this question is a little bit heretical but I want to know your thoughts about this topic.

I guess general dog fooding and making sure RIOT supports everything that's needed to act as a border router. However, I guess the RIOT developers know other good reasons for going the RIOT-based border router way.

Cheers, Tobi

[1]

[2]

Hi,

Hello everyone, just one thought about border-routers from a newbie: Why not using embedded boards like Raspberry Pi for this purpose. Everything from the

software stack side is available (bridging in every direction) and if you use a Pi Zero it will not cost much more than 20$.

The Pi is a great platform for prototyping primarily because of the wide usage and therefore comparably good documentation/support, but not a good production system in my opinion. I for one would not base a production system on a device which uses an SD card for its primary memory.

Wouldn't the development resources be better invested in supporting more platforms and drivers?

Since RIOT is a community driven free software project people will mostly do whatever they want/need at that point in time :wink:

Cheers, Ludwig

May I come back to my problem? :slight_smile:

@Cenk, I read the discussion but it still doesn't seem to work. I want LINUX to send UDP to BOARD B via BOARD A (border router) Here is my setup:

Linux computer: @RIOT-2016.02/dist/tools/tunslip$ sudo ./tunslip6 affe::1/64 -t tun0 -s /dev/ttyUSB0 ********SLIP started on ``/dev/ttyUSB0'' opened tun device ``/dev/tun0'' ifconfig tun0 inet `hostname` up ifconfig tun0 add affe::1/64 ifconfig tun0 add fe80::0:0:0:1/64 ifconfig tun0

tun0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00           inet adr:127.0.1.1 P-t-P:127.0.1.1 Masque:255.255.255.255           adr inet6: fe80::1/64 Scope:Lien           adr inet6: affe::1/64 Scope:Global           UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1           Packets reçus:0 erreurs:0 :0 overruns:0 frame:0           TX packets:0 errors:0 dropped:0 overruns:0 carrier:0           collisions:0 lg file transmission:500           Octets reçus:0 (0.0 B) Octets transmis:0 (0.0 B)

BOARD A: @/RIOT-2016.02/examples/gnrc_border_router$ make term BOARD=samr21-xpro /RIOT-2016.02/dist/tools/pyterm/pyterm -p "/dev/ttyACM0" -b "115200" 2016-03-04 17:36:05,543 - INFO # Connect to serial port /dev/ttyACM0 Welcome to pyterm! Type '/exit' to exit. 2016-03-04 17:36:12,125 - INFO # main(): This is RIOT! (Version: 2016.03-devel-615-ga6fae-ubuntu) 2016-03-04 17:36:12,128 - INFO # RIOT border router example application 2016-03-04 17:36:12,131 - INFO # All up, running the shell now help 2016-03-04 17:37:05,971 - INFO # > help 2016-03-04 17:37:05,974 - INFO # Command Description 2016-03-04 17:37:05,978 - INFO # --------------------------------------- 2016-03-04 17:37:05,983 - INFO # udp send data over UDP and listen on UDP ports 2016-03-04 17:37:05,985 - INFO # reboot Reboot the node 2016-03-04 17:37:05,990 - INFO # ps Prints information about running threads. 2016-03-04 17:37:05,993 - INFO # ping6 Ping via ICMPv6 2016-03-04 17:37:05,997 - INFO # random_init initializes the PRNG 2016-03-04 17:37:06,002 - INFO # random_get returns 32 bit of pseudo randomness 2016-03-04 17:37:06,016 - INFO # ifconfig Configure network interfaces 2016-03-04 17:37:06,017 - INFO # txtsnd send raw data 2016-03-04 17:37:06,019 - INFO # fibroute Manipulate the FIB (info: 'fibroute [add|del]') 2016-03-04 17:37:06,027 - INFO # ncache manage neighbor cache by hand 2016-03-04 17:37:06,029 - INFO # routers IPv6 default router list 2016-03-04 17:37:06,030 - INFO # 6ctx 6LoWPAN context configuration tool ifconfig 6 add affe::2 2016-03-04 17:37:20,786 - INFO # > ifconfig 6 add affe::2 2016-03-04 17:37:20,790 - INFO # success: added affe::2/64 to interface 6 ncache add 6 affe::1 2016-03-04 17:37:26,155 - INFO # > ncache add 6 affe::1 2016-03-04 17:37:26,159 - INFO # success: added IPv6 address affe::1 to neighbor cache ifconfig 2016-03-04 18:40:03,163 - INFO # > ifconfig 2016-03-04 18:40:03,168 - INFO # Iface 5 HWaddr: 39:96 Channel: 26 Page: 0 NID: 0x23 2016-03-04 18:40:03,172 - INFO # Long HWaddr: 5a:5a:4b:52:74:76:b9:96 2016-03-04 18:40:03,179 - INFO # TX-Power: 0dBm State: IDLE max. Retrans.: 3 CSMA Retries: 4 2016-03-04 18:40:03,192 - INFO # AUTOACK CSMA MTU:1280 HL:64 6LO RTR IPHC 2016-03-04 18:40:03,193 - INFO # Source address length: 8 2016-03-04 18:40:03,194 - INFO # Link type: wireless 2016-03-04 18:40:03,205 - INFO # inet6 addr: ff02::1/128 scope: local [multicast] 2016-03-04 18:40:03,206 - INFO # inet6 addr: fe80::585a:4b52:7476:b996/64 scope: local 2016-03-04 18:40:03,208 - INFO # inet6 addr: ff02::1:ff76:b996/128 scope: local [multicast] 2016-03-04 18:40:03,209 - INFO # 2016-03-04 18:40:03,211 - INFO # Iface 6 2016-03-04 18:40:03,212 - INFO # 2016-03-04 18:40:03,223 - INFO # MTU:1280 HL:64 RTR RTR_ADV 2016-03-04 18:40:03,226 - INFO # Link type: wired 2016-03-04 18:40:03,227 - INFO # inet6 addr: ff02::1/128 scope: local [multicast] 2016-03-04 18:40:03,229 - INFO # inet6 addr: ff02::2/128 scope: local [multicast] 2016-03-04 18:40:03,232 - INFO # inet6 addr: affe::2/64 scope: global 2016-03-04 18:40:03,238 - INFO # inet6 addr: ff02::1:ff00:2/128 scope: local [multicast] 2016-03-04 18:40:03,239 - INFO # ping6 affe::1 2016-03-04 18:41:33,960 - INFO # > ping6 affe::1 2016-03-04 18:41:33,979 - INFO # 12 bytes from affe::1: id=85 seq=1 hop limit=64 time = 12.285 ms 2016-03-04 18:41:34,998 - INFO # 12 bytes from affe::1: id=85 seq=2 hop limit=64 time = 12.799 ms 2016-03-04 18:41:36,019 - INFO # 12 bytes from affe::1: id=85 seq=3 hop limit=64 time = 12.902 ms 2016-03-04 18:41:36,022 - INFO # --- affe::1 ping statistics --- 2016-03-04 18:41:36,028 - INFO # 3 packets transmitted, 3 received, 0% packet loss, time 2.0655570 s 2016-03-04 18:41:36,031 - INFO # rtt min/avg/max = 12.285/12.662/12.902 ms

BOARD B: @/RIOT-2016.02/examples/gnrc_networking$ make term BOARD=samr21-xpro PORT_LINUX=/dev/ttyACM1 /RIOT-2016.02/dist/tools/pyterm/pyterm -p "/dev/ttyACM1" -b "115200" 2016-03-04 18:48:29,449 - INFO # Connect to serial port /dev/ttyACM1 Welcome to pyterm! Type '/exit' to exit. help 2016-03-04 18:48:35,175 - INFO # > help 2016-03-04 18:48:35,178 - INFO # Command Description 2016-03-04 18:48:35,181 - INFO # --------------------------------------- 2016-03-04 18:48:35,187 - INFO # udp send data over UDP and listen on UDP ports 2016-03-04 18:48:35,191 - INFO # reboot Reboot the node 2016-03-04 18:48:35,200 - INFO # ps Prints information about running threads. 2016-03-04 18:48:35,202 - INFO # ping6 Ping via ICMPv6 2016-03-04 18:48:35,203 - INFO # random_init initializes the PRNG 2016-03-04 18:48:35,208 - INFO # random_get returns 32 bit of pseudo randomness 2016-03-04 18:48:35,213 - INFO # ifconfig Configure network interfaces 2016-03-04 18:48:35,219 - INFO # txtsnd send raw data 2016-03-04 18:48:35,222 - INFO # fibroute Manipulate the FIB (info: 'fibroute [add|del]') 2016-03-04 18:48:35,225 - INFO # ncache manage neighbor cache by hand 2016-03-04 18:48:35,229 - INFO # routers IPv6 default router list 2016-03-04 18:48:35,235 - INFO # rpl rpl configuration tool [help|init|rm|root|show] ifconfig 2016-03-04 18:48:45,583 - INFO # > ifconfig 2016-03-04 18:48:45,588 - INFO # Iface 7 HWaddr: 52:be Channel: 26 Page: 0 NID: 0x23 2016-03-04 18:48:45,592 - INFO # Long HWaddr: 5a:5a:45:5f:0d:d7:52:be 2016-03-04 18:48:45,599 - INFO # TX-Power: 0dBm State: IDLE max. Retrans.: 3 CSMA Retries: 4 2016-03-04 18:48:45,606 - INFO # AUTOACK CSMA MTU:1280 HL:64 6LO RTR IPHC 2016-03-04 18:48:45,610 - INFO # Source address length: 8 2016-03-04 18:48:45,613 - INFO # Link type: wireless 2016-03-04 18:48:45,616 - INFO # inet6 addr: ff02::1/128 scope: local [multicast] 2016-03-04 18:48:45,622 - INFO # inet6 addr: fe80::585a:455f:dd7:52be/64 scope: local 2016-03-04 18:48:45,628 - INFO # inet6 addr: ff02::1:ffd7:52be/128 scope: local [multicast] 2016-03-04 18:48:45,629 - INFO # udp server start 8888 2016-03-04 18:51:34,054 - INFO # > udp server start 8888 2016-03-04 18:51:34,057 - INFO # Success: started UDP server on port 8888

LINUX: netcat -6u <here I want to send to BOARD B> What should I write? (because netcat -6u fe80::585a:455f:dd7:52be won't work)

Cheers,

Also I can ping from BOARD A to B and reverse I tired on LINUX: netcat -6u affe::585a:455f:dd7:52be 8888 but it doesn't seem to go through tun0, may I should reroute something?