SixML - Gateways
Transparentes Routing zwischen Netzen

Die SixML ermöglicht es, verschiedene physikalische Netze transparent miteinander zu verbinden. Dafür werden zusätzliche Tupel eingesetzt, die ein Routing zwischen Klienten und Geräten ermöglichen, auch wenn sich diese in verschiedenen Netzen befinden.

Request-Routing

Es gibt zwei Gruppen von Gateway-Tupeln. Die erste Gruppe wird benutzt, um Request-Nachrichten zu Geräten zu routen. Die folgenden Tupel sind definiert:

GatewayID                               (4-8 Bytes)
HopAccessID                             (1 Byte)
HopAccessAddress                        (1-8 Bytes)
HopAccessPort                           (1-2 Bytes) 
GatewayID 

GatewayID wird benutzt, um Routingschleifen für Broadcast-Nachrichten zu erkennen (DeviceAnnouncement, DeviceSearch, Event).

HopAccessID	

HopAccessID identifiziert eindeutig den Transceiver, der die Nachricht auf dem Gateway empfangen hat. Er wird für das Routen der Antworten benötigt, damit das Gateway weiss, über welchen Transceiver die Antwort weitergesendet werden muss.

HopAccessAddress, -Port 

HopAccessAddress:Port bestimmen die Quelladresse der Nachricht im Netz des empfangenden Gateway-Transceivers. An diese Adresse leitet das Gateway später die Antwort weiter. Benutzt das Gerät zum Nachrichtenempfang den für das Netzwerk definierten Standardport, kann das Porttupel entfallen.

HopAccessAddress muss als erstes und HopAccessID als letztes Tupel übertragen werden. Eine Gruppe von zusammengehörigen AccessTupeln wird als AccessHop bezeichnet.

Response-Routing

Klienten erwarten Antworten auf gesendete Such- oder Kontrollnachrichten. Um diese zu routen, gibt es ResponseEntities, welche die folgenden Tupel definieren:

HopResponseID                           (1 Byte)
HopResponseAddress                      (1-8 Bytes)
HopResponsePort                         (1-2 Bytes)	

Die jeweilige Funktion entspricht den für AccessTupel definierten. HopResponseAddress muss als erstes und HopResponseID als letztes Tupel übertragen werden.

Routing-Algorithmus

Im folgenden gibt es einen allgemeinen Überblick, welche Aktionen ein Gatewayknoten für die verschiedenen Nachrichtentypen durchzuführen hat. Der Quelltransceiver beschreibt das empfangene Netzwerkinterface, der Zieltransceiver das Interface, über welches Nachrichten weitergeleitet werden.

Nachrichtentyp AccessHops ResponseHops Zieltransceiver für Weiterleitung

DeviceSearch

Nicht relevant

Quelltransceiver anhängen inkl. HopGatewayID

Alle außer Quelltransceiver

DeviceSearchResult

Quelltransceiver anhängen

Letzten Hop entfernen

Letzter ResponseHop

DeviceAnnouncement, DeviceRemoval

Quelltransceiver anhängen inkl. HopGatewayID

Nicht relevant

Alle außer Quelltransceiver

Event

HopGatewayID anhängen

Nicht relevant

Alle außer Quelltransceiver

Description- und ControlRequests

Letzten Hop entfernen

Quelltransceiver anhängen

Letzter AccessHop

Description- und ControlResponses

Nicht relevant

Letzten Hop entfernen

Letzter ResponseHop

Eine Besonderheit gilt für Event-Nachrichten. Diese enthalten aus Effizienzgründen keine kompletten AccessHops, sondern lediglich HopGatewayIDs. Das Gateway hängt vor der Weiterleitung von Ereignisnachrichten die eigene HopGatewayID an die existierende Nachricht an. Auf diese Weise können Schleifen für weitergeleitete Events verhindert werden, da das Gateway Nachrichten, die bereits die eigene ID enthalten, verwirft.

Gateway - Beispiel

Im folgenden wird ein einfaches Gatewayszenario beschrieben, die Teilnehmerbeschreibung finden Sie links. Zum besseren Verständnis sollte der Abschnitt Kommunikationsprotokolle bereits bekannt sein.

Im folgenden werden neben dem Nachrichtentyp nur die neu hinzugekommenen Tupel aufgeführt.

Gateway - Discovery

Der Sensor sendet seine Announcement-Nachricht von der Adresse:Port 34:21 als Broadcast an 255:20

1 Byte                                  21                                      DiscoveryInformation
  1 Byte                                1                                       
  1 Byte                                01                                      DeviceAnnouncement
...

Weiterleitung von Announcement-Nachrichten

Das Gateway empfängt die Nachricht und leitet sie in das IP-Netz an die Broadcast-Adresse weiter. Damit Klienten aus dem IP-Netz Nachrichten an den Sensor schicken können, wird der Pfad zum Sensor an die Nachricht angehängt.

1 Byte                                  21                                      DiscoveryInformation
  1 Byte                                1                                       
  1 Byte                                01                                      DeviceAnnouncement
...
1 Byte                                  53                                      HopAccessAddress
  1 Byte                                1                                       
  1 Byte                                34                                      Adresse des Sensors im Funknetz
1 Byte                                  54                                      HopAccessPort
  1 Byte                                1                                       
  1 Byte                                21                                      Unicast-Port des Sensors
1 Byte                                  51                                      GatewayID
  1 Byte                                2                                       
  2 Bytes                               0x1253                                  ID des Gateways
1 Byte                                  52                                      HopAccessID
  1 Byte                                1                                       
  1 Byte                                1                                       ID des Funk-Interface im Gateway

Die Reihenfolge der Gateway-Tupel ist festgelegt, um ein einfaches Handling in nicht objektorientierten Sprachen zu ermöglichen. HopAccessAddress muss als erstes und HopAccessID als letztes Tupel übertragen werden. Der Klient im IP-Netz speichert das Gerät unter der IP-Adresse des Gateways und spricht es auch über diese Adresse an. Aus Klientensicht empfängt der Sensor Nachrichten auf der Socket-Addresse 192.168.1.10:5000 (IP-CommTransceiver im Gateway), die echte Adresse (34:21) wird in einer AccessEntity gespeichert.

Gateway - Control

Aktionsaufrufe oder Abfragen von Dienstwerten werden auf die gleiche Art weitergeleitet. Die Nachricht des Klienten geht an die gespeicherte Gateway-Adresse (192.168.1.10:5000).

1 Byte                                  26                                      ControlRequest
  1 Byte                                1                                       
  1 Byte                                33                                      ServiceValue
...
1 Byte                                  53                                      HopAccessAddress
  1 Byte                                1                                       
  1 Byte                                34                                      Adresse des Sensors im Funknetz
1 Byte                                  54                                      HopAccessPort
  1 Byte                                1                                       
  1 Byte                                21                                      Unicast-Port des Sensors
1 Byte                                  52                                      HopAccessID
  1 Byte                                1                                       
  1 Byte                                1                                       ID des Funk-Interface im Gateway

Weiterleitung von Control-Nachrichten

Der Gatewayknoten empfängt die Nachricht über den Gatewayport 5000. Über die HopAccessID wird das Zielnetzwerk bestimmt und die Nachricht in dieses Netzwerk an HopAccessAddress:HopAccessPort weitergesendet. Der letzte gefundene AccessHop wird aus der Nachricht entfernt. Um die Antwort routen zu können, wird vom Gateway eine ResponseEntity an die weitergeleitete Nachricht angehängt.

1 Byte                                  26                                      ControlRequest
  1 Byte                                1                                       
  1 Byte                                33                                      ServiceValue
...
1 Byte                                  63                                      HopResponseAddress
  1 Byte                                4                                       
  4 Bytes                               192.168.1.5                             Adresse des Klienten
1 Byte                                  64                                      HopResponsePort
  1 Byte                                2                                       
  2 Bytes                               5500                                    Unicast-Port des Klienten
1 Byte                                  62                                      HopResponseID
  1 Byte                                1                                       
  1 Byte                                2                                       ID des IP-Interface im Gateway

HopResponseAddress muss wiederum das erste Tupel sein, HopResponseID das letzte.

Rückrouten von ControlResponse-Nachrichten

Der Sensor empfängt und verarbeitet die Nachricht. Die Antwort wird an die Quelladresse der weitergeleiteten Nachricht (also an das Funk-Interface im Gateway, in diesem Fall 35:21) gesendet. ResponseHops (HopResponseAddress, HopResponsePort und HopResponseID) werden in die Antwortnachricht übernommen.

1 Byte                                  19                                      GetServiceValueResult
  1 Byte                                1                                       
  1 Byte                                1                                       Ok
...
1 Byte                                  63                                      HopResponseAddress
  1 Byte                                4                                       
  4 Bytes                               192.168.1.5                             Adresse des Klienten
1 Byte                                  64                                      HopResponsePort
  1 Byte                                2                                       
  2 Bytes                               5500                                    Unicast-Port des Klienten
1 Byte                                  62                                      HopResponseID
  1 Byte                                1                                       
  1 Byte                                2                                       ID des IP-Interface im Gateway

Das Gateway empfängt die Antwort. Über die HopResponseID wird das Zielinterface bestimmt. Die letzte ResponseEntity wird entfernt, anschließend wird die Nachricht an HopResponseAddress:HopResponsePort (also an den Klienten) weitergeleitet.

 

 

VERWEISE

Daten für das Gateway - Beispiel:

Sensorknoten:
Netz-Typ:Funk
Adresse: 34
Unicast-Port: 21

Gatewayknoten:
GatewayID: 0x1253

Netz-Typ: Funk
TransceiverID:1
Adresse: 35
Unicast-Port: 21

Netz-Typ:IP
TransceiverID:2
Adresse 192.168.1.10
Unicast-Port: 5000

Klient:
Netz-Typ:IP
Adresse: 192.168.1.5, Unicast-Port 5500