Dies ist eine alte Version des Dokuments!
Der Jackdaw Raven USB Stick als RPL Border Router
Vor einiger Zeit sind innerhalb des Contiki Quellcodes einige Änderungen bezüglich RPL und dem Raven USB Stick durchgeführt worden (https://github.com/contiki-os/contiki/wiki/Jackdaw-RNDIS-RPL-border-router), wodurch es nun möglich ist den Raven USB Stick als RPL Border Router zu verwenden.
Es sind hierzu nur einige kleine Anpassungen nötig.
Zunächst muss innerhalb der Datei examples/ravenusbstick/Makefile.ravenusbstick
die Option CONTIKI_NO_NET=1
auskommentiert und dafür der uIP Stack mit UIP_CONF_IPV6=1
mitkompiliert werden.
all: ravenusbstick #Define CONTIKI_NO_NET=1 for a passthrough ipv6/6lowpan interface using fakeuip.c #Define UIP_CONF_IPV6=1 to include the uip6 stack (for rpl, internal webserver) #Do make clean when switching to remove the duplicate library modules #CONTIKI_NO_NET=1 UIP_CONF_IPV6=1 CONTIKI = ../.. include $(CONTIKI)/Makefile.include
Im zweiten Schritt müssen innerhalb der Datei core/net/rpl/rpl-icmp6.c
Anpassungen des Buffers vorgenommen werden. Da die Datei auch von anderen Programmen genutzt wird, ist es sinnvoll an dieser Stelle Präprozessoranweisungen zu verwenden, welche nur im Fall RavenUSBStick + uIPv6 Stack
aktiv werden.
Dazu einfach jede Zeile innerhalb der Datei welche
buffer_length = uip_len - uip_l3_icmp_hdr_len;
enthält durch
//buffer_length = uip_len - uip_l3_icmp_hdr_len; /*sz*/ #if CONTIKI_TARGET_AVR_RAVENUSB && UIP_CONF_IPV6 buffer_length = uip_len - uip_l3_icmp_hdr_len+UIP_CONF_LLH_LEN; #else buffer_length = uip_len - uip_l3_icmp_hdr_len; #endif /*sz*/
zu ersetzen.
Standardmäßig ist die Anzahl der Neighbors sowie der Routen jeweils auf 2 begrenzt, diese können jedoch problemlos auf jeweils 10 erhöht werden. Dazu müssen lediglich innerhalb der Datei platform/avr-ravenusb/contiki-conf.h
die folgenden Änderungen vorgenommen werden:
/* See uip-ds6.h */ //#define UIP_CONF_DS6_NBR_NBU 2 #define UIP_CONF_DS6_NBR_NBU 10 #define UIP_CONF_DS6_DEFRT_NBU 2 #define UIP_CONF_DS6_PREFIX_NBU 3 //#define UIP_CONF_DS6_ROUTE_NBU 2 #define UIP_CONF_DS6_ROUTE_NBU 10
Damit sind alle notwendigen Vorbereitungen getroffen und die .elf Datei kann mit make
im Verzeichnis examples/ravenusbstick/
kompiliert werden. Der anschließende Upload mithilfe des AVR Studios erfolgt wie in AVR RavenRZ USB-Stick Installation beschrieben.
Unter Ubuntu wird der USB Stick danach automatisch erkannt, wie mit einem kurzen dmesg
herausgefunden werden kann. Im nun den USB Stick als normales Netzwerkinterface nutzen zu können sind nur noch die beiden Befehle
sudo ifconfig usb0 -arp sudo ip -6 address add bbbb::0/64 dev usb0
notwendig, anschließend kann der RPL-Border-Router mit 'ping6 bbbb::200 ' erreicht werden.
Der Neighbor Cache sowie die aktuellen Routen können auch eingesehen werden. Dazu ist jedoch ein Zugriff über die serielle Schnittstelle ttyACM0
mit einem Terminal Programm wie z.B. Putty notwendig. Das Menü kann dort mit h
abgefragt werden, den Neighbor Cache und die Routen erhält man durch den Tastendruck N
.