Web
Analytics
Skip to main content

Protokoll-Struktur IAX

In diesem Abschnitt wird der allgemeine Aufbau des Protpokolls IAX näher beleuchtet, wobei hierbei auch von der Protokoll-Struktur gesprochen werden kann.

IAX stellt mit seiner Struktur ein sehr effektives Protokoll dar. So kann dieses in der Informationsverarbeitung bzw. -übertragung auf 2 verschiedene Header zurückgreifen.

– 12 Byte Full-Header
o Dieser Header wird eingesetzt, wenn für die Kommunikation Steuerinformationen eingesetzt werden müssen. Somit enthält dieses alle für die Kommunikation relevanten Informationen.

– 4 Byte Mini-Header
o Dieser Header ist ausschließlich für den Transport von Nutzlast vorgesehen. Somit sind in diesem nur die nötigsten Informationen enthalten und auf zusätzliche Steuerinformationen wird verzichtet.

Für die Übertragung der mittels IAX zu übermittelnden Kommunikationsdaten wird das UDP (User Datagram Protocol) eingesetzt, wobei es sich laut Definition um ein verbindungsloses Transportprotokoll handelt.

Nachfolgend werden die eben benannten Header näher beleuchtet:

Fullheader

Mittels dieses Headers werden zwischen den an der Kommunikation beteiligten Teilnehmern die für die Verbindung benötigten Steuerinformationen übertragen.

Die nachfolgende Abbildung illustriert den Aufbau dieses Headers, welches zur Steuerung eingesetzt wird:

Fullheader

Fullheader

– CallNr (Größe = 2 Byte)
o Dieses Feld weist der Seite des Senders eine Rufnummer für die Verbindung zu.

– DCallNr (Größe = 2 Byte)
o Diesem Feld wird die Zielrufnummer des Empfängers zugewiesen, welcher an dieser Verbindung teilnehmen soll.

– TS (Größe = 4 Byte)
o Diesem Feld ist ein Zeitstempel (timestamp) zugewiesen.

– SeqNr (Größe = 2 Byte)
o Diesem Feld sind für eingehenden und abgehenden Verkehr der Verbindung Sequenznummer hinterlegt. Diese aufeinander folgenden Sequenznummern sind dabei nur durch die Kommunikationsteilnehmer auslesbar.

– Type (Größe = 1 Byte)
o Diesem Feld ist der der Typ des zu übertragenen Paketes zugewiesen, wobei insgesamt 8 Typen unterschieden werden:
“ Type 1
“ Tastatureingabemöglichkeit
“ Aufruf = DTMF

“ Type 2
“ Sprachdaten
“ Aufruf = VOICE

“ Type 3
“ Videodaten
“ Aufruf = VIDEO

“ Type 4
“ Nachrichten für Steuerung und Kontrolle
“ Aufruf = CONTROL

“ Type 5
“ Debugging-Möglichkeit
“ Aufruf = NULL

“ Type 6
“ Anweisungen im IAX-Format
“ Aufruf = IAX

“ Type 7
“ Tastaturdialoge
“ Aufruf = TEXT

“ Type 8
“ Bilddaten
“ Aufruf = IMAGE
– SubC (Größe = 1 Byte)
o Das Feld SubClass ist stark an das Feld Type gebunden, denn es besteht eine Abhängigkeit zwischen diesen beiden Feldern. So ist SubC abhängig von dem im Feld Typ gesetzten Wert.

Für den Type IAX sind insgesamt 29 unterschiedliche Werte spezifiziert, welche in der nachfolgenden Tabelle aufgelistet sind:

“ SubC 01
“ Einleitung einer Verbindung (Verbindungsanfrage)
“ Aufruf = NEW

“ SubC 02
“ Hiermit wird mittels eines Pings die Erreichbarkeit getestet.
“ Aufruf = PING

“ SubC 03
“ Das ist die Antwort auf den mittels Ping angeforderten Erreichbarkeitstest
“ Aufruf = PONG

“ SubC 04
“ Hiermit werden die einzelnen Datenpakete bestätigt.
“ Aufruf = ACK

“ SubC 05
“ Hiermit wird das Verbindungsende (Auflegen) signalisiert.
“ Aufruf = HANGUP

“ SubC 06
“ Hiermit wird eine Verbindungsanfrage abgewiesen.
“ Aufruf = REJECT

“ SubC 07
“ Zustandekommen einer Verbindung (Abheben).
“ Aufruf = ACCEPT

“ SubC 08
“ Hiermit wird für die Sicherheit eine Authentifizierungsanfrage gestellt.
“ Aufruf = AUTHREQ

“ SubC 09
“ Antwort auf die Authentifizierungsanfrage
“ Aufruf = AUTHREP

“ SubC 10
“ Hiermit wird eine Registrierungsanfrage abgelehnt.
“ Aufruf = REGREJ

“ SubC 11
“ Dies entspricht einer Force Release der Registrierung.
“ Aufruf = REGREL

“ SubC 12
“ Dieser Wert wird dann belegt, wenn vor dem ersten gütigen Voice-Datenpaket Sprache gesendet wird.
“ Aufruf = VNAK

“ SubC 13
“ Hiermit erfolgt eine Statusabfrage eines sich im Dialplanes befindlichen Eintrages.
“ Aufruf = DPREQ

“ SubC 14
“ Hiermit wird die Antwort auf die Statusabfrage des Dialplanes übertragen.
“ Aufruf = DPREP

“ SubC 15
“ Hiermit wird die Anwahl einer Verbindung (Anrufen) gekennzeichnet.
“ Aufruf = DPREP

“ SubC 16
“ Hiermit wird eine Request einer Transferanfrage übermittelt.
“ Aufruf = TXREQ

“ SubC 17
“ Hiermit wird der Connect einer Transferverbindung übermittelt.
“ Aufruf = TXCNT

“ SubC 18
“ Hiermit wird ein akzeptierter Transfer signalisiert.
“ Aufruf = TXACC

“ SubC 19
“ Hiermit wird ein bereiter Transferempfang signalisiert.
“ Aufruf = TXREADY

“ SubC 0a
“ Hiermit wird ein besetzt an den Sender signalisiert.
“ Aufruf = INVAL

“ SubC 0b
“ Hiermit überprüft der Server, ob der entsprechende Client sich noch im aktiven Zustand befindet.
“ Aufruf = LAGRQ

“ SubC 0c
“ Hiermit überprüft der Client, ob der entsprechende Server sich noch im aktiven Zustand befindet.
“ LAGRP

“ SubC 0d
“ Hiermit wird eine Registrierungsanfrage gestellt.
“ REGREQ

“ SubC 0e
“ Hiermit werden die benötigten Registrierungsdaten übertragen.
“ REGREQ

“ SubC 0f
“ Hiermit wird eine Registrierung akzeptiert.
“ REGACK

“ SubC 1a
“ Hiermit wir ein Transfer Release übertragen.
“ TXREL

“ SubC 1b
“ Hiermit wird ein Transfer abgelehnt.
“ TXREJ

“ SubC 1c
“ Hiermit wird eine Unterbrechung/Störung einer Audio- bzw. Video-Übertragung signalisiert.
“ QUELCH

“ SubC 1d
“ Hiermit wird eine Wiederaufnahme einer Audio- bzw. Video-Übertragung signalisiert.

Miniheader

Damit die Kommunikation und die damit verbunden Übertragungspakete effektiver genutzt werden, kommt, wie schon erwähnt, ein 2. Header, der so genannte Mini-Header zum Einsatz. Der Mini-Header wurde dafür konzipiert, ohne „lästige“ Zusatzinformationen (Steuerinformationen) verarbeitet zu werden. Somit wird dieser Header, welcher 4 Byte umfasst, für die reine Übertragung von Nutzdaten eingesetzt. Zudem besitzt der Mini-Header den Vorteil, dass dieser durch seine geringere Größe entsprechend mehr Nutzdaten mitführen kann.

Nachfolgend wird der Mini-Header grafisch dargestellt.

Mini Header

Mini Header

Die in der Abbildung aufgezeigten Felder werden nachfolgend vorgestellt.

– CallNr (Größe = 2 Byte)
o Dieses Feld weist der Seite des Senders eine Rufnummer für die Verbindung zu.

– TS (Größe = 2 Byte)
o Diesem Feld ist ein Zeitstempel (timestamp) zugewiesen.

Was hier zu erkenne ist, ist die Tatsache, dass der Zeitstempel halbiert (2 Byte anstatt 4 Byte) wurde. Zudem wurde auf die Felder DCallNR, SubC, SeqNR und Typ verzichtet. Der Verzicht dieser einzelnen Felder spiegelt sich entsprechend positive in der Verarbeitungszeit und der möglichen Größe des Nutzdatenanteils pro Paket wieder.

Eine Datenübertragung kann jedoch nicht nur mit dem Mini-Header erfolgen, da so die Verbindung keinerlei Steuerung unterliegt. Wenn eine Übertragung mittels Mini-Header eingeleitet wird, erfolgt in einem zyklischen Abstand von ca. 60 Sekunden ein zusätzliches Full-Header-Datenpaket. So soll die Steuerung der Übertragung sichergestellt werden.

Top Artikel in Asterisk