This page is deprepated have a look at the [[uberbus]] page ====== Intro ====== Der uberbus soll der Hausbus der Kapsel werden. ===== Beteiligte ===== * schneider (Konzept, Mikrocontroller, RS485, Protokollentwicklung) * fpletz (Netzaufbau, IPv6, IPSec, Auth) ===== Medien ===== ==== CAN ==== Can ist ein Bussystem, dass auf einfachem TP-Kabel Nachrichten uebertragen kann. Spezielle CAN-Controller stellen dabei die Zustellung sicher. ==== RS485 ==== RS485 verwendet ebenfalls RS485. Es ist dabei deutlich guenstiger als CAN da hier keine speziellen Controller benoetigt werden, Dafuer muss fuer einen Betrieb mit mehreren Busmastern(Lichtschalter) die Kollisionserkennung/vermeidung selbst in Software durchgefuehrt werden. Bestehendes: http://openhc.wiki.sourceforge.net/ ==== Funk ==== Falls keine Leitung gezogen werden soll sind RFM12-Module eine Option zur Uebertragung. ===== Das RS485/IPv6 Hybrid-System ===== ==== Prinzip ==== Es werden mehrere RS485-Subnetze ueber Ethernet verbunden. Dabei werden den Devices in den Subnetzen IDs zugeordnet, die im Ethernet auf IPv6-Adressen gemappt werden. High Speed Chaos Control Concentrators (HSC3) fungieren hierbei als Bridge zwischen Ethernet/IPv6 auf RS485. ==== IPv6 ==== Es werden hierbei globale IPv6-Adressen fuer jedes Device zugeordnet. Um Authentifizierung und zum Schutz vor Replay Attacks zu gewaehrleisten wird IPsec AH (alternativ ESP fuer Verschluesselung) eingesetzt. Jeder HSC3 kuemmert sich hierbei um die Authentifizierung/Entschluesselung der Pakete und schickt die reine Payload an das Device ueber RS485 weiter. Etwaige Antworten werden dem jeweiligen Host zurueckgeschickt (UDP oder TCP), hierbei muss aehnlich wie bei NAT ein Connection State gehalten werden. Jeder HSC3 bekommt ein /112 Subnetz zugewiesen, wie z.B. 2001:470:9aca::23:0/112. Die Device-IDs werden direkt aus der letzten Gruppe des IPv6-Adresse gewonnen. Das Device mit der ID 42 haette dann die IP 2001:470:9aca::23:42. Es muss sichergestellt werden, dass entsprechende Routen im Netz (Router) gesetzt werden, so dass Pakete an den zustaendigen HSC3 geleitet werden. ==== Authentifikation / Authorisierung ==== Die Authentifizierung der Keys sollte von einem weiteren Rechner (brezn) durchgefuehrt werden. Hierbei waere eine feingranulare Moeglichkeit der Rechtevergabe zu implementieren (z.B. Zugriff auf bestimmte Klassen von Devices). Die Daten zur Authentifikation sollten aus dem LDAP gezogen werden. Zur Authorisierung soll eine weitere Datenbank zu diesem Zweck erstellt werden. ==== CSMA/CD RS485 Bus ==== Unter Verwendung des CSMA/CD Teils von openHC wird ein RS485-Bus verwendet um Geraeten das eigenstaendige Senden von Datenpaketen zu ermoeglichen. Die Kollisionserkennug und Retries werden komplett in Software auf den Mikrocontrolleren behandelt. Der Bus ist mit momentan 19200bps nur fuer langsame und sporadische Datenuebertragungen gedacht wie Lichtschalter und einfachen Lampen. Die Datenrate kann jedoch vorraussichtlich noch gesteigert werden. === Frameaufbau === Ein Frame auf dem Bus hat folgenden Aufbau: ^Position^Laenge^Bezeichnung^Wertebereich^ |0|1 Byte|Datenlaenge|1-50| |1|1 Byte - 50 Bytes| Daten| | |1+Datenlaenge|2 Bytes|CRC ueber komplettes Frame| | === Paketaufbau=== Der Bus arbeitet paketbasiert. Im Datenbereich eines Frame wird das Paket gepackt. Jedes Paket muss vom Empfaenger bestaetigt werden ansonsten wird nochmals versucht es zu senden. Sollte dies fehlschlagen wird der Bus als gestoert angenommen. ^Position^Laenge^Bezeichnung^ |0|1 Byte|Quelladresse| |1|1 Byte|Zieladresse| |2|1 Byte|Flags| |3|1 Byte|Sequenznummer| |4|1 Byte|Datenlaenge| |5| |Daten| Adressverteilung auf dem lokalen Segment: ^Maske^Bezeichnung^ |0xxxxxx|Unicast| |1xxxxxx|Multicast| |1111111|Broadcast| Flags: ^Wert^Bezeichnung^ |0x01|ACK| |0x02|Error|