So, ich schon wieder. Nachdem ich nun die halbe Nacht über
gesicherte und ungesicherte Nachrichten nachgedacht habe,
möchte ich euch meine Gedanke nicht vorenthalten.

Dreh- und Angelpunkt der Überlegungen ist die Tatsache, das die
Nachricht auf verschiedenen Ebenen gesichert werden kann. Zum
einen in der Verbindungsschicht, zum anderen in der Übertragungs-
schicht. Interessant wird diese Tatsache jedoch erst bei
Nachrichten die geroutet werden. Hier kann die Übertragungsschicht
aus unterschiedlich gesicherten Segmenten bestehen. Ist die
Übertragungsschicht vollständig gesichert, dann ist die
Sicherung auf Verbindungsebene sehr viel einfacher. Sicherung
von Nachrichten kostet auf jeder Ebene Rechenleistung.
Wünschenswert wäre deshalb für jede Nachricht die Übertragung
mit der minimalsten(performantesten) Sicherung.

Diese Überlegungen sollen eine Entscheidungshilfe sein, ob
und auf welchen Schichten wir sichern.

Erstmal eine Übersicht, welche Arten von Nachrichten es gibt.
  • 1.) Ungesicherte Nachrichten ohne Acknowledge
    - Keine Wiederholung
    - Kein Acknowledge (für den Absender)
    - Broadcastfähig
    - Kann jederzeit verlorengehen

    2.) Gesicherte Nachrichten ohne Acknowledge
    - Gesichert innerhalb der Übertragungsschicht (Wiederholung)
    - Kein Acknowledge (für den Absender)

    - nicht Broadcastfähig
    - kann verlorengehen, jedoch unwahrscheinlich

    3.) Nachrichten mit Acknowledge (gesichert und ungesichert)
    - Gesichert innerhalb der Verbindungsschicht und der Übertragungsschicht
    - Bei durchgehend gesicherter Übertragungsschicht: Wiederholung nur in der Ü-Schicht.
    - (Bei nicht durchgehend gesicherter Ü-Schicht: Wiederholung auf beiden Schichten.)
    - Acknowledge/Timeout für den Absender

    - nicht Broadcastfähig
    - kann verlorengehen, jedoch unwahrscheinlich + wird erkannt


Anmerkungen zu 3.)
Auch der Acknowledge ist im Prinzip eine eigene Nachricht, die
verlorengehen kann. Deshalb bietet es sich an, Nachrichten mit
Acknowledge als Kombination zweier Gesicherter Nachrichten ohne
Acknowledge zu übertragen. Das Acknowledge ist damit eine
'reguläre' Nachricht (auf Schicht 3), die z.B. auch Daten
enthalten kann. Je besser die Übertragungsschicht abgesichert
ist, desto schneller effizienter funktioniert die
Verbindungsschicht.


Fragen die wir uns stellen müssen:
1.) Ist es sinnvoll/notwendig die Übertragungsschicht durchgehen zu sichern
2.) Wenn ja: mit einer eigenen Zwischenschicht oder sichert sich die Ü-Schicht selbst ?
3.) Ist es sinnvoll/notwendig eine Verbindungsschicht zu haben ?

Bei den Fragen sind wohl die uCs der Entscheidende Faktor, denn für
größeren Rechner würde ich alle drei Fragen mit ja beantworten.
  • Anmerkungen:
    Gesicherte Nachrichten und ungesicherte Nachrichten lassen sich (fast)
    gleichgut empfangen (Ü-Schicht sendet ack, fertig)

    Gesicherte Nachrichten zu senden ist aufwändiger als ungesicherte
    Nachrichten, jedoch nicht unbedingt schwierig
    (auf Ack warten oder wiederholen, timeout)

    Hat der uC gesicherte Verbindungen ohne Acknowledge, sind die
    Anworten auf Nachrichten mit Acknowledge einfach.

    Initiieren von Nachrichten mit Acknowledge ist schwierig
    (Asynchron, speichern, wiederholung, timeout)

    Alle gesicherten Nachrichten bedeuten erstmal mehr Protokollaufwand.


In diesem Sinne würde ich folgendes vorschlagen:
  • 1.) Erstmal nur ungesicherte, verbindungslose Nachrichten implementierten.

    2.) Im zweiten Schritt kann dann die Übertragungsebene gesichert werden,
    am besten ohne Zwischenschicht. Dann kann die Ü-Schicht selbst entscheiden,
    ob und wie sie die Nachricht sichert. Auf uCs ist es nicht möglich,
    gesicherte Verbindungen zu initiieren.



ciao,
Georg