Benutzer-Werkzeuge

Webseiten-Werkzeuge


contiki:netzwerkprogrammierung

FAQ Netzwerke und -programmierung

Keine Verbindung zum Sensorknoten

Um mit Link-lokalen IPv6 Adressen zu arbeiten muss immer zwingend die Netzwerkschnittstelle mit angegeben werden über die Nachrichten versendet werden sollen. Bei Linux geschieht dies durch ein nachgestelltes %-Zeichen und den Namen der Netzwerkschnittstelle nach der IP-Adresse:

 ping6 fe80::206:98ff:fe00:232%tap0

Fehlerhafte / fehlende Einträge in der Routingtabelle

 netstat -nr6 | grep <prefix>

Fehlende Einträge können nachgetragen werden mit:

 sudo ip -6 route add aaaa::/64 dev eth0 

Falsche Einträge können gelöscht werden:

 sudo ip -6 route del aaaa::/64 dev eth0

Mögliche Ursachen:

1. Ein fehlerhaft konfigurierter RouterAdvertisment Daemon (''radvd''):
 ps -ax | grep radvd 
  # oder
 service radvd status

Mit diesen Kommandos lässt sich ermitteln, ob der Daemon auf dem System läuft. Die Konfigurationsdatei für den radvd findet sich in /etc/radvd.conf radvd kann mit sudo service radvd start gestartet und mit sudo service radvd stop gestoppt werden.

Anschließend das Netzwerkinterface neu starten:

 sudo ifconfig eth0 down && sudo ifconfig eth0 up
2. Ein dynamisch konfiguriertes Interface (z.B. tap0) hat noch keine IP-Adresse

Wird Contiki mit dem Target minimal-net übersetzt und ausgeführt wird ein tap-Interface erzeugt. Dieses hat nur eine link-lokale IPv6-Adresse und damit existiert auch kein Eintrag in der lokalen Routingtabelle.

 sudo ip -6 addr add aaaa::1/64 dev tap0

Fehlende Einträge in der Neighbor Tabelle

Dieser Fehler betrifft vor allem Systeme bei denen Contiki als Borderrouter auf einem USB-Stick läuft:
https://github.com/contiki-os/contiki/wiki/Jackdaw-RNDIS-RPL-border-router

Hierbei werden Neighbor Solications und Neighbor Advertisements nicht in das 6LoWPAN weitergeleitet. Es muss also dafür gesorgt werden, dass das System keine NS/NA Nachrichten erzeugt. Dafür existieren zwei Ansätze:

1. NS/NA komplett abschalten

 ifconfig usb0 -arp

2. Die Neighbor Tabelle mit bekannten Systemen füllen

 ip -6 neigh add 2001:638:812:b88b::200 lladdr 02:12:13:14:15:16 dev usb0

Umgang mit IP-Adressen

IP Adressen werden in Variablen vom Typ uip_ipaddr_t gespeichert. IPv6 Adressen können je nach verwendeter Funktion entweder aus 16-bit Integer-Werten aufgebaut, oder als Text-String angegeben werden

  uip_ipaddr_t ip_addr;
 
  //uiplib_ip6addrconv(const char *addrstr, uip_ip6addr_t *addr);
  uiplib_ip6addrconv("2001:db8::1", &ip_addr);
 
  //uip_ip6addr(addr, addr0, addr1, addr2, addr3, addr4, addr5, addr6, addr7)
  //Construct an IPv6 address from eight 16-bit words. 
  uip_ip6addr(&ip_addr, 0x2001, 0xdb8, 0, 0, 0, 0, 0, 0x1);
Diese Website verwendet Cookies. Durch die Nutzung der Website stimmen Sie dem Speichern von Cookies auf Ihrem Computer zu. Außerdem bestätigen Sie, dass Sie unsere Datenschutzbestimmungen gelesen und verstanden haben. Wenn Sie nicht einverstanden sind, verlassen Sie die Website.Weitere Information
contiki/netzwerkprogrammierung.txt · Zuletzt geändert: 2017/01/24 18:49 von 127.0.0.1