K (→Application Server) |
K (→Siehe auch) |
||
(4 dazwischenliegende Versionen von einem anderen Benutzer werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
− | |||
− | |||
− | |||
− | |||
== RNcom Schicht 1 - Übersicht == | == RNcom Schicht 1 - Übersicht == | ||
Zeile 19: | Zeile 15: | ||
auf jedem Segment möglichst gering zu halten. Praktisch bedeutet dies, eine eingehende Nachricht (möglichst) | auf jedem Segment möglichst gering zu halten. Praktisch bedeutet dies, eine eingehende Nachricht (möglichst) | ||
nur an die Knoten weiterzuleiten, die wirklich zu den Empfängern dieser Nachricht gehören. | nur an die Knoten weiterzuleiten, die wirklich zu den Empfängern dieser Nachricht gehören. | ||
+ | |||
+ | Nach oben virtualisiert die Schicht die konkreten Übertragungspfade und stellt einen zusammenhängenden | ||
+ | Raum adressierbarer Knoten zur Verfügung. | ||
Zeile 80: | Zeile 79: | ||
* Verwerfen: dem Absender wird die Ungültigkeit der Adresse nicht mitgeteilt. | * Verwerfen: dem Absender wird die Ungültigkeit der Adresse nicht mitgeteilt. | ||
− | * Statusrückmeldung (Ack/Nack)<br/>Der Absender erfährt, ob die Nachricht erfolgreich versendet oder verworfen wurde. <br/> Problem: ''Diese Antwort muss der Absender geeignet der eigentlichen Nachricht zuordnen können''. Die Nachricht sollte also z.B. eine eindeutige Sequenznummer tragen. | + | * Statusrückmeldung (Ack/Nack)<br/>Der Absender erfährt, ob die Nachricht erfolgreich versendet oder verworfen wurde. <br/> Problem: ''Diese Antwort muss der Absender geeignet der eigentlichen Nachricht zuordnen können''. Die Nachricht sollte also z.B. eine eindeutige Sequenznummer (auf Schicht 1) tragen. |
+ | |||
+ | Nachdem dieselbe Funktionalität auch durch Schicht 2 erreicht werden kann, werden vorerst keine Acks auf Schicht 1 definiert. | ||
Zeile 110: | Zeile 111: | ||
zwischen den verschiedenen Routern ermöglicht. | zwischen den verschiedenen Routern ermöglicht. | ||
<br/> | <br/> | ||
+ | |||
Allgemeines Format aller Nachrichten: | Allgemeines Format aller Nachrichten: | ||
Zeile 143: | Zeile 145: | ||
{| {{Blaueschmaltabelle}} | {| {{Blaueschmaltabelle}} | ||
| Length | | Length | ||
− | | Länge des Datenpaketes | + | | Länge des Datenpaketes, evtl abzüglich der bereits <br/>definierten Headerbytes (implementierungsabhängig) |
|} | |} | ||
Zeile 168: | Zeile 170: | ||
|- | |- | ||
| Byte 6 | | Byte 6 | ||
− | | rowspan=3 colspan=2 | | + | | rowspan=3 colspan=2 | Nutzdaten für Schicht 2 |
|- | |- | ||
| ... | | ... | ||
Zeile 175: | Zeile 177: | ||
|- | |- | ||
|} | |} | ||
+ | |||
+ | Die bereits festgelegten Headerbytes müssen nicht zwingend als Teil des Datenpaketes übergeben werden. | ||
+ | Stattdessen können die bereits definierten Daten auch als Parameter übergeben werden. Dies ist abhängig von | ||
+ | der Implementierung. Aus Gründen der Verständlichkeit werden die Daten hier immer als ganzes Paket dargestellt. | ||
Zeile 182: | Zeile 188: | ||
** [[RNcom Schicht 0 UART Spezifikation]] | ** [[RNcom Schicht 0 UART Spezifikation]] | ||
** [[RNcom Schicht 0 TCP-IP Stream Spezifikation]] | ** [[RNcom Schicht 0 TCP-IP Stream Spezifikation]] | ||
+ | ** [[RNcom Schicht 0 IP-Multicast Spezifikation]] | ||
* RNcom Schicht 1 | * RNcom Schicht 1 | ||
Zeile 192: | Zeile 199: | ||
*[[Network Controller/PC Schichten]] | *[[Network Controller/PC Schichten]] | ||
*[[Network Controller/PC Spezifikationen]] | *[[Network Controller/PC Spezifikationen]] | ||
− | |||
==Autor== | ==Autor== |
Aktuelle Version vom 12. März 2006, 14:42 Uhr
Inhaltsverzeichnis
RNcom Schicht 1 - Übersicht
Allgemeines
Die Schicht 1 weis nichts mehr von der konkreten Hardware. Sie kennt nur noch eine Menge an Verbindungen die genutzt werden kann. Im folgenden werden diese Verbindungen Segmente und die über ein Segment erreichbaren Kommunikationspartner Devices genannt.
Hauptaufgabe der Schicht 1 ist die Weiterleitung von Nachrichten über verschiedene Segmente hinweg. Dazu nehmen die Router Nachrichten von den lokalen Knoten und den angeschlossenen Segmenten entgegen und leiten diese an die relevanten lokalen Knoten bzw. Segmente weiter. Ziel dabei ist es die Netzlast auf jedem Segment möglichst gering zu halten. Praktisch bedeutet dies, eine eingehende Nachricht (möglichst) nur an die Knoten weiterzuleiten, die wirklich zu den Empfängern dieser Nachricht gehören.
Nach oben virtualisiert die Schicht die konkreten Übertragungspfade und stellt einen zusammenhängenden Raum adressierbarer Knoten zur Verfügung.
Statisches Routing
Woher weis nun ein Router, wohin eine Nachricht weitergeleitet werden muss?
Die Zuordnung von Adressen zu Devices/Segmenten kann statisch konfiguriert werden. Bestimmte Adressen werden also immer an bestimmte Segmente weitergeleitet. Besonders bei uCs dürfte dies der Standardfall sein. Hier kann das statische Routing auch problemlos angewendet werden, da neben den lokalen Knoten nur ein Segment mit vmtl. einem Device existiert. Eine weitere einfache Möglichkeit der statischen Konfiguration ist die Assoziation von Netzen und Devices bei der bestimmte Netze fest zu einem bestimmten Device weitergeleitet werden.
Nachteile:
- nicht flexibel (Routing muß extra konfiguriert werden)
- Falsche (überflüssige) Weiterleitung von Nachrichten
Vorteile:
- einfach zu realisieren
Dynamisches Routing
Beim dynamischen Routing kann ein Router zur Laufzeit bestimmen, welche Adressen über welche Devices erreichbar sind. Dazu müssen ihm die direkt erreichbaren Router Auskunft geben können, welche Adressen über sie direkt(lokal) und indirekt(durch Weiterleitung) erreichbar sind. Bei Netzwerken mit Kreisstrukturen muss zusätzlich die Entfernung zum Ziel übertragen werden damit der Router nach der Verbindung mit dem kürzesten Weg suchen kann.
Beispiel:
Der "embedded Windows" Router in der Mitte des Beispielbildes hat 5 Segmente mit insgesamt 8 Devices. Wenn er nun seine Devices nach ihren Routen befragt, so erhält er als Antwort (von links oben im Uhrzeigersinn): (1.1, 1.2) (1.3) (3.1) (4.1, 4.2, 4.3) (5.4, 5.5, 4.6) (5.1, 5.2, 5.3) (2.2, 2.3) (2.1)
Kernprobleme beim dynamischen Routing
- Welche anderen Devices sind erreichbar?
Diese Frage mag trivial erscheinen, bei einigen Medien wie z.B. Multicastgruppen ist sie jedoch nicht zu beantworten. In diesem Fall weis der Router nicht vorab, welche anderen Devices existieren. Entsprechend schwierig ist es, diese Devices gezielt zu ihrer Routingtabelle zu befragen.
- Welche Adressen sind über ein bestimmtes Device verfügbar?
Wie werden diese Informationen übertragen?
Wie werden sie erneuert?
Was passiert wenn das Device ausfällt oder abgesteckt wird?
- Je nach Art und Menge der Adressen kann die Routingtabelle ziemlich groß werden. Große Routingtabelle verbrauchen nicht nur unerheblichen Speicherplatz, sie sind auch sehr schwer zu übertragen.
- Wie kann eine eventuell vorhandene Broadcastmöglichkeit auf dem Medium ausgenutzt werden?
Vorteile:
- dynamisch, flexibel
- effizientes Routing
Acks und Nacks
Was macht ein Router wenn die Zieladresse nicht bekannt ist?
- Verwerfen: dem Absender wird die Ungültigkeit der Adresse nicht mitgeteilt.
- Statusrückmeldung (Ack/Nack)
Der Absender erfährt, ob die Nachricht erfolgreich versendet oder verworfen wurde.
Problem: Diese Antwort muss der Absender geeignet der eigentlichen Nachricht zuordnen können. Die Nachricht sollte also z.B. eine eindeutige Sequenznummer (auf Schicht 1) tragen.
Nachdem dieselbe Funktionalität auch durch Schicht 2 erreicht werden kann, werden vorerst keine Acks auf Schicht 1 definiert.
Application Server
Auf Schicht 1 können auch eventuelle "Application Server" aufsetzen. Sie übernehmen die eigentliche Anbindung der Hardware und habe keine lokalen Knoten. Stattdessen stellen sie effiziente Anbindungsmöglichkeiten auf Schicht 0 zur Verfügung. Der Vorteil dabei ist, das der Application Server die Verwaltung und Konfiguration der Hardware übernimmt und Clientprogramme bequem und gleichzeitig über ein einziges Kommunikationsprotokoll (auf Schicht 0) auf das Netz zugreifen können.
Anmerkungen
- Aus Sicht der Schicht 1 haben die Devices keine eigene Adresse, nur die lokal angeschlossenen Knoten sind adressierbar. Die Devices sind also die "Netzinfrastruktur" während die (adressierbaren) Knoten die Teilnehmer sind.
- Die Adressen der Knoten müssen die Netzwerktopologie nicht zwingend wiederspiegeln. Theoretisch können die Adressen rein zufällig verteilt sein. Um ein effizientes Routing zu ermöglichen, können hier jedoch Einschränkungen getroffen werden. Siehe dazu auch: RNcom Schicht 1 Einfaches Dynamisches Routing
- Wenn innerhalb desselben Transportmediums mehrere parallele Verbindungen (wie z.B. TCP-IP Streams) existieren, die keinen gemeinsamen Broadcast teilen, dann sind diese Verbindungen auf Schicht 1 verschiedene Segmente, obwohl sie physisch ein Kommunikationsmedium teilen.
- DHCP / Enumeration
Ein Dienst der einem anderen Device einen Adressbereich für seine lokalen Knoten zuweisen kann könnte auf dieser Schicht angesiedelt sein.
Allgemeiner Nachrichtenaufbau:
Wie deutlich wurde sind die Routingmöglichkeiten innerhalb der Schicht 1 vielfältig. Aus diesem Grund kann
der Nachrichtenaufbau der Schicht 1 nicht ohne weiteres komplett definiert werden. Stattdessen ist eine
flexible Struktur notwendig, die nicht nur die Übertragung von Daten der Schicht 2 sondern auch von Nachrichten
zwischen den verschiedenen Routern ermöglicht.
Allgemeines Format aller Nachrichten:
Length | Länge des Datenpaketes |
Byte 1 | Type | Der Typ der Nachricht. 0..127 = Schicht 1 Nachricht 128..255 = Schicht 2 Nachricht |
Byte 2 | Datenpaket, Format abhängig von Typ | |
Byte 3 | ||
... | ||
Byte n |
Für die Nachrichtentypen 0..127 können nun Nachrichten spezifiert werden mit denen die Router direkt
miteinander kommunizieren. Diese Nachrichten werden nur innerhalb der Segmente ausgetauscht und nicht
geroutet. Sie richten sich immer direkt an ein Device oder ein Segment und können z.B. zum Austausch
von dynamischen Routinginformationen genutzt werden.
Die Nachrichten vom Typ 128..255 werden an die Schicht 2 weitergeleitet und müssen geroutet werden. Deshalb wird für diese Nachrichten das Format um die Ziel- und Absenderadresse erweitert.
Length | Länge des Datenpaketes, evtl abzüglich der bereits definierten Headerbytes (implementierungsabhängig) |
Byte 1 | Type | 128..255 = Schicht 2 Nachricht |
Byte 2 | Dest Net | Netznummer des Empfängers |
Byte 3 | Dest Node | Knotennummer des Empfängers |
Byte 4 | Src Net | Netznummer des Absenders |
Byte 5 | Src Node | Knotennummer des Absenders |
Byte 6 | Nutzdaten für Schicht 2 | |
... | ||
Byte n |
Die bereits festgelegten Headerbytes müssen nicht zwingend als Teil des Datenpaketes übergeben werden. Stattdessen können die bereits definierten Daten auch als Parameter übergeben werden. Dies ist abhängig von der Implementierung. Aus Gründen der Verständlichkeit werden die Daten hier immer als ganzes Paket dargestellt.
Siehe auch
- RNcom Schicht 1
und auch: