[Studienarbeiten: Kommunikation zwischen PDAs]

1.3 IrLAP Link Access Protokoll

IrLAP entspricht der Datenübertragungsschicht (Schicht 2)  im OSI-Schichtenmodell und stützt sich auf die bestehenden Halb-Duplex-Protokolle HDLC und SDLC.

Eine wichtige Eigenschaft von IrLAP ist das Konzept von primären und sekundären Stationen. Die primäre Station hat die Verantwortung für die Verbindung. Es gibt genau eine primäre Station und eine (bei point-to-point) oder mehrere (bei point-to-multipoint) sekundäre. Alle Übertragungen gehen von oder zur primären Station. Prinzipiell darf jede Station die Rolle der primären übernehmen, sofern sie implementationsbedingt dazu in der Lage ist . Die primäre Station wird beim Verbindungsaufbau bestimmt und bleibt es bis zum Verbindungsabbau. Diese Tatsache bleibt allerdings hinter den IrLAP Dienstprimitiven verborgen, so daß sie bei deren Beschreibung keine Rolle spielt.

IrLAP benutzt die meisten der HDLC-Standardrahmenformate. Es gibt unnummerierte (unnumbered)U-Rahmen, Überwachungs (supervisory) S-Rahmen und Informations I-Rahmen. U-Rahmen werden für Funktionen wie Verbindungsauf und -abbau oder das Suchen nach anderen Geräten (discovery) benutzt; mit I-Rahmen werden Informationen von einer Station zur anderen übertragen und S-Rahmen dienen zur Unterstützung der Informationsübertragung, also zum Beispiel um ein Datenpaket explizit zu bestätigen (I-Rahmen können andere I-Rahmen implizit ebenfalls bestätigen) oder für die Flußkontrolle.

IrLAP enthält außerdem Funktionen zum Verbindungsauf- und -abbau mit Absprache der Qualität der Verbindung (Übertragungsrate, Timeoutzeiten etc.), zur Ermittlung der Adressen von Geräten in Reichweite und zur Auflösung von Adresskonflikten.

Reihenfolge der IrLAP-Aktionen

Discovery Dienste

Die Discovery-Dienste dienen dazu, kommunikationsbereite Geräte zu finden, die sich in Reichweite befinden.
IrLAP_DISCOVERY.request Startet Suche nach Geräten in Reichweite, die eine Verbindung zulassen.
IrLAP_DISCOVERY.indication(Discovery-Log) Wird aufgerufen, wenn die eigene Station bei einer Suche gefunden wurde. Der Parameter Discovery-Log enthält Informationen über die suchende Station. 
IrLAP_DISCOVERY.confirm(Liste von Discovery-Logs) Als Ergebnis der Suche erhält man eine Liste mit Informationen über die verbindungsbereiten Geräte in Reichweite.

Parameter

Discovery-Log solicited + sniff + device-address + IrLAP-version + discovery-info
solicited [true | false] 
Das solicited Flag ist nicht gesetzt, wenn die Station gefunden wurde, weil sie selbst eine Suche gestartet hat. Dies ist vor allem bei der IrLAP_DISCOVERY.indication der Fall. 
Es ist gesetzt, wenn die Station durch ihre Antwort auf die Suchanfrage gefunden wurde.
sniff [true | false] 
Dieses Flag ist gesetzt, wenn das Gerät im Sniffing-Mode betrieben wird.
Device-Address 32-Bit IrLAP-Geräte-Adresse.
IrLAP-Version Versionsnummer der Station.
Discovery-Info Maximal 32 Bytes weitere Informationen. Diese werden von höheren Schichten belegt.

 

Adress-Konflikt Dienste

Diese Dienste dienen dazu, einen Adresskonflikt zu lösen. Ein Adresskonflikt besteht, wenn mehrere Geräte mit der selben IrLAP-Geräte-Adresse gefunden werden.
IrLAP_NEW_ADDRESS.request(Device-Address) Fordert alle Geräte in Reichweite mit der übergebenen Geräte-Adresse auf, eine neue Adresse zu wählen.
IrLAP_NEW_ADDRESS.confirm(Liste von Discovery-Logs) Das Ergebnis ist eine Liste von Discovery-Logs, mit den neuen Geräte-Adressen. Die Liste enthält nur Geräte, die zur Adressänderung aufgefordert wurden.

 

Unit-Data Dienste

Die Unit-Data Dienste dienen zum verbindungslosen Datentransfer. Die Übertragung ist unsicher und kann nicht an eine bestimmte Station adressiert werden, sondern geht grundsätzlich an alle Geräte in Reichweite (Broadcast).
IrLAP_UNITDATA.request(User-Data) Löst die Übertragung der übergebenen Daten aus.
IrLAP_UNITDATA..indication(User-Data) Zeigt der übergeordneten Schicht an, daß verbindungslose Daten empfangen wurden.

 

Connect Dienste

Die Connect Dienste dienen dazu, Verbindungen aufzubauen. Da die Qualität der Verbindung nicht von vorneherein feststeht, wird diese dabei ausgehandelt. Vor dem Verbindungsaufbau werden alle Daten mit der Standardübertragungsrate von 9600 bps übertragen.
IrLAP_CONNECT.request(Target-Device-Adr, 
Requested-QoS, Sniff)
Initiiere Verbindungsaufbau zum Gerät mit der Adresse Target-Device-Adr und dem gewünschten quality of service Requested-QOS. Das Sniff-Flag gibt an, ob die Zielstation im Sniffing-Modus ist. 
Zieladresse und Sniff-Flag können beide dem Discovery-Log entnommen werden, das von den Discovery Diensten zurückgegeben wird.
IrLAP_CONNECT.indication(Source-Device-Adr, 
Connection-Handle,Requested-QoS)
Informiert die übergeordnete Schicht, daß die Station mit der Adresse Source-Device-Adr eine Verbindung der Qualität Requested QoS wünscht.
IrLAP_CONNECT.response(Source-Device-Adr, 
Connection-Handle, Returned-QoS)
Akzeptiert die Verbindung und sendet den für beide Stationen maximal möglichen QoS zurück.
IrLAP_CONNECT.confirmation(Connection-Handle, 
Returned-QoS)
Zeigt an, daß die Verbindung erfolgreich aufgebaut wurde mit der Qualität Returned-QoS.

 

Sniffing Dienste

Sniffing ist eine spezielle stromsparende Betriebsart, mit der ein Gerät auf einen Verbindungswunsch einer anderen Station warten kann. Es muß dazu nicht aktiv auf einen IrLAP_DISCOVERY.request einer anderen Station warten, sondern wacht einfach ab und zu (alle 2-3 Sekunden) auf und hört ob gerade Daten übertragen werden. Falls nicht, wird eine Antwort auf einen IrLAP_DISCOVERY.request (der ja eventuell tatsächlich erfolgt ist) als Broadcast gesendet und gewartet, ob eine andere Station eine Verbindung aufbauen will.
IrLAP_SNIFF.request(Cancel) Mit diesem Dienst kann der<Sniffing-Modus> ein(Cancel =FALSE) oder ausgeschaltet (Cancel = TRUE) werden. 

 

Daten Dienste

Diese Dienste dienen dazu, Daten verbindungsorientiert an die Gegenstelle zu übertragen.
IrLAP_DATA.request(Connection-Handle, User-Data,Expedited-Unreliable-Flag) Mit diesem Dienst wird die Übertragung der übergebenen Daten (User-Data) veranlaßt. Das Expedited-Unreliable-Flag gibt dabei an, ob die Übertragung sicher sein soll oder nicht.
IrLAP_DATA.indication(Connection-Handle, User-Data,Expedited-Unreliable-Flag) Mit diesem Dienst teilt IrLAP mit, daß ein Paket mit Daten empfangen wurde.

 

Status Dienste

IrLAP_STATUS.request(Connection-Handle) Mit diesem Dienst kann die übergeordnete Schicht überprüfen, ob die Gegenstelle noch auf Bestätigungen für versandte Datenpakete wartet. Die Antwort der anderen  Station löst die Funktion IrLAP_STATUS.confirm aus. Hierbei handelt es sich um eine reine Abfragefunktion; die Übertragung der Daten wird nicht beeinflußt.
IrLAP_STATUS.indication(Connection-Handle, 
Quality-Of-Link)
Diese Funktion wird ausgelöst, wenn die Qualität der Verbidung zu schlecht wird. Bleibt die Qualität längere Zeit schlecht, kommt es zum Verbindungsabbruch.
IrLAP_STATUS.confirm(Connection-Handle, 
Unacked-Data-Flag)
Diese Funktion wird aufgerufen, wenn die Gegenstelle auf einen IrLAP_STATUS.request antwortet. Sind noch unbestätigte Datenpakete vorhanden, ist das Unacked-Data-Flag=TRUE.

 
 

Reset Dienste

Ein Reset verwirft alle noch nicht bestätigten Datenpakete und setzt alle Timer und Zähler zurück. Ein Reset wird nur durchgeführt, wenn beide Stationen zustimmen.
IrLAP_RESET.request(Connection-Handle) Fordert die Gegenstelle zu einem Reset auf.
IrLAP_RESET.indication(Connection-Handle) Zeigt an, daß die Gegenstelle einen Reset durchführen will und auf eine  Zustimmung wartet.
IrLAP_RESET.response(Connection-Handle,accept) Beantwortet den IrLAP_RESET.request der Gegenstelle. Wenn accept=TRUE wird der Reset durchgeführt, sonst nicht.
IrLAP_RESET.confirm(Connection-Handle,accept) Die Antwort der Gegenstelle auf den IrLAP_RESET.request wird angezeigt.

Disconnection Dienste

Disconnection-Dienste sollen Verbindungen ordnungsgemäß beenden. Alle noch ausstehenden Datenpakete werden verworfen. Ein IrLAP_DISCONNECT.confirm ist nicht nöig, da der Verbindungsabbau auf jeden Fall erfolgreich ist.
IrLAP_DISCONNECT.request(Connection-Handle) Beendet die Verbindung. 
IrLAP_DISCONNECT.indication(Connection-Handle, 
Unacked-Data)
Zeigt an, daß die Gegenstelle die Verbindung beendet hat. Der Parameter Unacked-Data beinhalted Informationen über noch unbestätigte Datenpakete und ist implementierungsabhängig. 

 

 

 

[Studienarbeiten: Kommunikation zwischen PDAs]