Comm - Applikationsschicht

Die Applikationsschicht beschreibt die verfügbaren Protokolle auf Applikationsebene. Dies umfasst neben SixML auch Algorithmen, welche in verschiedenen Netzen zur Erfüllung netzwerkspezifischer Aufgaben genutzt werden können, z.B. zur Adressvergabe oder für Gatewayfunktionalitäten.

SCF

SCF-Klienten und Geräte tauschen SixML-strukturierte Nachrichten aus.

Portdefinitionen:

LAN/WLAN                      UDP                           Broadcast: 2000, Unicast: 2100 oder durch Betriebssystem
CAN                           STRAP                         Broadcast: 20, Unicast: 21
CustomRadio                   STRAP                         Broadcast: 20, Unicast: 21
Seriell                       STRAP                         Broadcast: 20, Unicast: 21
802.15.4                      STRAP                         Broadcast: 20, Unicast: 21 
HTTP                          ZoneRouting                   Broadcast: 2000, Unicast: 2100
WebSockets                    ZoneRouting                   Broadcast: 2000, Unicast: 2100

Jedes SCF-kompatible Gerät öffnet zwei Sockets, einen für die Broadcast- und einen für die Unicast-Kommunikation. Der Broadcast-Socket dient nur dem Empfang von Nachrichten. Alle gesendete Nachrichten, auch solche, die an die Broadcast-Socketadresse gerichtet sind, benutzen den Unicast-Socket als Quelle. Damit ist sichergestellt, dass als Zielsocketadresse für Geräte-Requests (Unicast-Nachrichten) immer die Socketadresse genutzt werden kann, welcher z.B. zum Versenden der Announcement-Nachrichten genutzt wurde.

Announcement-, Such- und Eventnachrichten werden an die Broadcast-Socketadresse gesendet, alle anderen Nachrichten an die Unicast-Socketadresse.

Autoaddressierung

Das folgende Protokoll stellt eine modifizierte Version des APIPA dar. Es dient dazu, eine konfliktfreie Adressvergabe zu ermöglichen, z.B. in proprietären Funknetzen.

Portdefinitionen:

LAN/WLAN                      TCP                           Nicht nutzbar
CAN                           DirectTransport               Broadcast: 30, Unicast: 31
CustomRadio                   STRAP                         Broadcast: 30, Unicast: 31
Seriell                       STRAP                         Nicht nutzbar
802.15.4                      STRAP                         Broadcast: 30, Unicast: 31 

Die Adressgröße ist netzabhängig und kann 1-4 Bytes betragen. Alle AutoAddress-Nachrichten werden an die Broadcast-Adresse des jeweiligen Netzes gesendet.

Adressanfragen:

Jeder Netzwerkteilnehmer versucht nach der Einrichtung der physikalischen Verbindung, eine eindeutige, unbenutzte Unicast-Adresse zu reservieren. Dies geschieht über eine Request-Nachricht, welche den folgenden Aufbau hat. Die Adresse kann entweder zufällig sein oder der zuletzt in diesem Netz benutzten Adresse entsprechen:

1 Byte                        1                             Nachrichtentyp: AddressRequest
2 Bytes                       3423                          Zufallszahl
1-4 Bytes                     5                             Angefragte Adresse 

Solange der Teilnehmer noch keine gültige Adresse hat, wird als Quelladresse die 0 benutzt. Die Zufallszahl dient der Unterscheidung eigener und fremder Requests, solange der Teilnehmer noch keine gültige Adresse besitzt.

Adressbestätigung:

Ein bereits im Netz registrierter Teilnehmer beantwortet die Request-Nachricht, wenn er selbst die angefragte Adresse benutzt. Teilnehmer noch ohne eigene Adresse beantworten die Anfrage ebenfalls, wenn sie zufällig die gleiche Adresse reservieren möchten.

1 Byte                        2                             Nachrichtentyp: AddressInUse
2 Bytes                       4322                          Zufallszahl
1-4 Bytes                     5                             In Benutzung befindliche oder angefragte Adresse 

Erhält der neue Teilnehmer innerhalb von 5 Sekunden keine Antwort, so kann er davon ausgehen, dass die angefragte Adresse noch nicht vergeben ist. Bei Adresskonflikten wiederholt er den beschriebenen Mechanismus bis zu dreimal mit jeweils einer neuen, zufälligen Adresse.

Adressausschluss:

Schlägt die Adressierung dreimal fehl, so sendet der Teilnehmer eine neue Nachricht, in der die von allen Knoten benutzten Adressen aktiv angefragt werden.

1 Byte                        3                             Nachrichtentyp: AddressCollection
2 Bytes                       62112                         Zufallszahl 

Alle Netzwerkteilnehmer beantworten die AddressCollection-Nachricht mit einer entsprechenden AddressInUse-Nachricht. Teilnehmer ohne zugewiesene Adresse senden die zuletzt angefragte Adresse, um eine Parallelreservierung zu vermeiden. Anschließend kann der Teilnehmer eine freie Adresse bestimmen und diese nochmals mit dem bereits beschriebenen AddressRequest verifizieren.

Sind alle im Netz verfügbaren Adressen vergeben, so kann der Teilnehmer alle 60 Sekunden eine neue AddressCollection starten oder mit AddressRequest eine spezifische Adresse anfragen.

GatewayDiscovery

Das GatewayDiscovery-Protokoll dient der Erkennung von Teilnehmern, welche mit mehr als einem Netzwerk verbunden sind und als Gateway zwischen diesen Netzwerken dienen können. Ein Netzwerkteilnehmer kann selbständig entscheiden, ob er Gateway-Anfragen akzeptiert oder nicht, z.B. aus Gründen der Energieersparnis oder der Beschränkung auf eine bestimmte Anzahl an Gateway-Clients.

Ein Gateway-Knoten ist z.B. dafür verantwortlich, SCF-Nachrichten von registrierten Clients bei Bedarf in das jeweils andere Netz weiterzuleiten (z.B. Suchanfragen oder Announcements).

Wie in der SixML benutzt das GatewayDiscovery-Protokoll TLV (Type, Length,Value)-Tupel zur inneren Segmentierung von Nachrichten.

Ein Netzwerkteilnehmer kann Gateway-Knoten im Netz durch folgende Nachricht suchen, welche an die Broadcast-Adresse gesendet wird:

1 Byte 11 Nachrichtentyp: GatewayDiscovery
1 Byte 0 Länge
1 Byte 0 EndOfPacket

Knoten, welche als Gateway dienen möchten, beantworten die Anfrage mit einer DiscoveryReply-Nachricht.

1 Byte 12 Nachrichtentyp: GatewayDiscoveryReply
1 Byte 0 Länge
1 Byte 0 EndOfPacket

Ein Knoten sucht sich anschließend aus allen Antworten einen Gateway-Knoten aus, z.B. anhand der Signalstärke oder der Antwortzeit:

1 Byte 13 Nachrichtentyp: GatewaySelect
1 Byte 0 Länge
1 Byte 0 EndOfPacket

Akzeptiert das Gateway den neuen Client, so sendet es innerhalb von 5 Sekunden eine SelectReply-Nachricht.

1 Byte 14 Nachrichtentyp: GatewaySelectReply
1 Byte 0 Länge
1 Byte 0 EndOfPacket