Benutzer-Werkzeuge

Webseiten-Werkzeuge


Übersetzungen dieser Seite:
de:sheeva-edge

Howto 6loWPAN-Static-Edge-Router

Es wird mit Hilfe eines Plug-Computers und eines Raven-USB-Sticks ein 6loWPAN-Edge-Router realisiert.

Raven-USB-Stick

Für den USB-Stick setzen wir das Betriebssystem Contiki ein. Contiki ist ein freies internetfähiges Betriebssystem für 8-Bit-Computer, entwickelt von Adam Dunkels. Contiki bietet einen einfachen ereignisgesteuerten Betriebssystemkern mit sogenannten Protothreads, optionalem präemptivem Multiprogramming, Interprozesskommunikation via Messagepassing durch Events, eine dynamische Prozessstruktur mit Unterstützung für das Laden und Entladen von Programmen, nativen TCP/IP-Support über den uIP TCP/IP-Stack und eine grafische Benutzerschnittstelle, welche direkt auf einem Bildschirm oder als virtuelle Anzeige über Telnet oder VNC genutzt werden kann. Der Speicherverbrauch beträgt nur wenige Kilobyte und kann für extrem eingeschränkte Systeme bei Bedarf bis auf einige zig Bytes reduziert werden. Inzwischen unterstützt Contiki auch IPv6 (uIPv6) und 6LoWPAN.

Der USB-Stick wird mit Hilfe von Contiki zu einem 6loWPAN-Bridge-Stick mit statischen IPv6 Adressen umfunktioniert. Siehe dazu den nachfolgenden Link:

http://www.sics.se/contiki/tutorials/tutorial-running-contiki-with-uipv6-and-sicslowpan-support-on-the-atmel-raven.html

Plug-Computer

Für den Plug-Computer setzen wir das Betriebssystem Linux (Debian 6.0) ein. Es ist für ARM CPUs verfügbar, besitzt IPv6-Fähigkeiten und beinhaltet viele nützliche Tools zur Realisierung eines Routers.

Install Debian 6.0

Nachstehender Link beschreibt die Installation von Debian 6.0 auf einem Plug-Computer:

  http://www.cyrius.com/debian/kirkwood/sheevaplug/install.html

Um unseren Plug über das ssh Protokoll von der Ferne administrieren zu können, installieren wir einen SSH-Server.

  apt-get install ssh

Nun parametrieren wir unsere Netzwerk Devices. Wir vergeben eth0 und usb0 eine statische IPv6 Adresse.

nano /etc/network/interfaces

Nachstehende Config einfügen:

# The primary network interface
allow-hotplug eth0
#iface eth0 inet dhcp
iface eth0 inet6 static
   address abbb::1
   netmask 64


allow-hotplug usb0
auto usb0
iface usb0 inet6 static
   address aaaa::1
   netmask 64

Router-Ankündigungs-Daemon

IPv6 hat einiges mehr an Unterstützung zur Autokonfiguration als IPv4. Aber damit diese Autokonfiguration auf den Hosts des Netzwerkes arbeitet, muss auf den Routern des lokalen Netzwerkes ein Programm laufen, welches die Autokonfigurationsanfragen des Hosts beantwortet. Unter Linux wird dieses Programm radvd genannt, was für Router-Advertisement-Daemon steht. Dieser Daemon lauscht nach Router Solicitations (RS) und antwortet mit Router Advertisement (RA). Ferner werden von Zeit zu Zeit unaufgeforderte RAs gesendet.[RADVD]

Zuerst parametrieren wir ipv6 forwarding durch Aktivierung nachstehender Configzeile:

nano /etc/sysctl.conf
net.ipv6.conf.default.forwarding=1

Als nächstes erzeugen wir uns eine Configdatei für den radvd Dämon.

nano /etc/radvd.conf

Nachstehende Config einfügen und dann speichern:

interface eth0
{
  AdvSendAdvert on;
  prefix abbb::/64
  {
    AdvOnLink on;
    AdvAutonomous on;
   AdvRouterAddr on;
  };
};

interface usb0
{
    AdvSendAdvert on;
    AdvLinkMTU 1280;
    AdvCurHopLimit 128;
    AdvReachableTime 360000;
    MinRtrAdvInterval 100;
    MaxRtrAdvInterval 150;
    AdvDefaultLifetime 200;
    prefix AAAA::/64
    {
        AdvOnLink on;
        AdvAutonomous on;
        AdvPreferredLifetime 4294967295;
        AdvValidLifetime 4294967295;
    };
};

Jetzt installieren wir den radvd.

apt-get install radvd

jetzt müssen wir noch das radvd Startscript ändern, da der radvd zu schnell startete und die Netzwerkinitialisierung noch nicht abgeschlossen wurde. Dabei dürfte es sich um einen Bug im Debian 6.0 System handeln.

nano /etc/init.d/radvd

case "$1" in
  start)
        echo -n "Starting $DESC: "
+       sleep 4
        chkconfig

Spätestens jetzt stecken wir unseren Raven-Stick in den USB-Anschluss des Plug-Computers ein. Ebenso starten wir unseren Funkknoten durch Anlegen der Versorgungsspannung. Wir restarten jetzt das System mit dem Befehl „reboot“.

Nach dem Neustart loggen wir uns ein und überprüfen mit „ifconfig“ unsere Netzwerkeinstellungen.

ifconfig sollte danach etwa folgendes zeigen:

eth0    Link encap:Ethernet  HWaddr 00:50:43:01:49:ad
        inet addr:192.168.3.28  Bcast:192.168.3.255  Mask:255.255.255.0
        inet6 addr: abbb::1/64 Scope:Global
        inet6 addr: fe80::250:43ff:fe01:49ad/64 Scope:Link
        UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
        RX packets:257 errors:0 dropped:0 overruns:0 frame:0
        TX packets:14 errors:0 dropped:0 overruns:0 carrier:0
        collisions:0 txqueuelen:1000
        RX bytes:32818 (32.0 KiB)  TX bytes:2020 (1.9 KiB)
        Interrupt:11

lo      Link encap:Local Loopback
        inet addr:127.0.0.1  Mask:255.0.0.0
        inet6 addr: ::1/128 Scope:Host
        UP LOOPBACK RUNNING  MTU:16436  Metric:1
        RX packets:8 errors:0 dropped:0 overruns:0 frame:0
        TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
        collisions:0 txqueuelen:0
        RX bytes:560 (560.0 B)  TX bytes:560 (560.0 B)

usb0    Link encap:Ethernet  HWaddr 02:12:13:14:15:16
        inet6 addr: aaaa::1/64 Scope:Global
        inet6 addr: fe80::12:13ff:fe14:1516/64 Scope:Link
        UP BROADCAST RUNNING MULTICAST  MTU:1298  Metric:1
        RX packets:0 errors:0 dropped:0 overruns:0 frame:0
        TX packets:12 errors:0 dropped:0 overruns:0 carrier:0
        collisions:0 txqueuelen:1000
        RX bytes:0 (0.0 B)  TX bytes:1880 (1.8 KiB

Testen der Routen über einen PC

Unser PC erzeugt sich per neighbor discovery mit Hilfe des Routers seine IPv6 Adresse.

Mann könnte sich auch selber eine vergeben:

ip -6 address add abbb::33/64 dev eth0

Unser Funkknoten besitzt z.B. die MAC Adresse 00:11:22:33:44:55. Unsere IPv6 Adresse besitzt eine Präfixlänge von 64, daher lautet die IPv6 Adresse unseres Funkknotens:

aaaa::0011:22ff:fe33:4455

Wir können nun auf unserem PC über den 6loWPAN-EDGE-ROUTER (sheevaplug+USB-RAVEN) unseren Funkknoten erreichen.

localhost:/home/harald# ping6 aaaa::0011:22ff:fe33:4455
PING aaaa::0011:22ff:fe33:4455(aaaa::11:22ff:fe33:4455) 56 data bytes
64 bytes from aaaa::11:22ff:fe33:4455: icmp_seq=1 ttl=127 time=26.5 ms
64 bytes from aaaa::11:22ff:fe33:4455: icmp_seq=2 ttl=127 time=25.8 ms
64 bytes from aaaa::11:22ff:fe33:4455: icmp_seq=3 ttl=127 time=25.0 ms

Nachfolgend wird der Weg der Pakete veranschaulicht:

PC eth0 (abbb::33) ←—→ (abbb::1)eth0 shivaplug usb0 (aaaa::1/64) ←— —>usb(bridge)usbraven←–Funk—> (aaaa::0011:22ff:fe33:4455)AVR-Raven-Funkknoten

Referenzen:

[wikipedia-contiki] http://de.wikipedia.org/wiki/Contiki

[RADVD] http://packages.ubuntu.com/de/lucid/radvd

de/sheeva-edge.txt · Zuletzt geändert: 2011/06/20 11:06 von wikisysop