Fast jeder Asterisk-Administrator muss sich irgendwann einmal die
Frage stellen, ob er eher auf SIP oder eher auf IAX setzen soll. Die kurze
Antwort: Wenn IAX möglich ist (also, wenn die Telefone es unterstützen),
dann sollte IAX benutzt werden. Ansonsten immer SIP. Mark Spencer (der
Erfinder von Asterisk) hat zu diesem Thema auf einer Asterisk-Mailingliste
im Jahr 2004 eine ausführlichere Antwort geschrieben (die im Original
englische E-Mail finden Sie im
Anhang J, IAX vs. SIP):
Date: Mon, 5 Jul 2004 18:59:52 -0500 (CDT)
From: Mark Spencer <markster@digium.com>
Ich möchte einige Unterschiede zwischen SIP und IAX kurz
zusammenfassen. Vielleicht hilft Dir das bei der
Entscheidungsfindung.
1) IAX arbeitet während des Gesprächs, unabhängig von der Anzahl
der Anrufe und des verwendeten Codecs, effizienter als RTP. Der
Vorteil liegt irgendwo zwischen 2400 Kbit/s für einen
Einzelanruf und der dreifachen Anzahl der Anrufe pro Megabit
bei G.729, wenn die Messung bei aktiviertem Trunk-Modus auf der
MAC-Ebene vorgenommen wird.
2) IAX ist nicht ASCII-, sondern datenelementkodiert. Dies macht
Implementierungen wesentlich leichter und zudem robuster
gegenüber Pufferüberlaufangriffen, da absolut keine Textanalyse
oder -interpretation erforderlich ist. IAX führt den gesamten
IP-Stapel, IAX-Stapel, TDM-Schnittstelle, Echokompensation und
Erzeugung der Anrufer-ID auf 4 Kbyte Heap und Stack sowie 64 Kbyte Flash
aus. Dies veranschaulicht ganz klar die
Implementierungseffizienz des Entwurfs. Die Größe der
IAX-Signalpakete ist drastisch geringer als die bei SIP, was
aber in der Regel nur dann erwähnenswert ist, wenn zahlreiche
Clients sich häufig registrieren. Allgemein gesprochen ist IAX2
bei der Kodierung, der Dekodierung und der Überprüfung der Daten
effizienter. Zudem wäre es für den Autor einer
IAX-Implementierung extrem schwierig, eine Inkompatibilität mit
einer anderen Implementierung herzustellen, da für eine
Interpretation kaum Raum vorhanden ist.
3) IAX weist eine sehr klare Trennung von Schicht 2 und Schicht
3 auf, d.h., sowohl Signalisierung als auch Tondaten haben
definierte Zustände, werden robust und in konsistenter Weise
übertragen, und wenn ein Endpunkt des Anrufs unvermittelt
verschwindet, dann wird der Anruf auch zeitnah beendet, und zwar
auch dann, wenn keine weiteren Signale und/oder Audiodaten
empfangen werden. Einen solchen Mechanismus weist SIP nicht auf;
hinzu kommt, dass, was die Signalisierung angeht, die
Zuverlässigkeit sehr niedrig und schwerfällig ist, weswegen
zusätzlich zum Kernstandard RF3261 weitere Standards benötigt
werden.
4) Die einheitlichen Signalisierungs- und Audiopfade von IAX
gestatten die transparente Navigation von NATs, und der
Firewall-Administrator muss lediglich einen einzigen Port
öffnen, um den Einsatz von IAX zu gestatten. Der IAX-Client
muss für einen korrekten Betrieb überhaupt nichts über das
Netzwerk wissen, in dem er sich befindet. Anders gesagt: Es kann
niemals eine durch eine Firewall bedingte Situation auftreten,
in der IAX einen Anruf aufbauen und dann keine Audiodaten
übertragen kann (natürlich vorausgesetzt, es ist genügend
Bandbreite vorhanden).
5) Das authentifizierte Übertragungssystem von IAX gestattet
die Übertragung von Audio- und Rufsteuerdaten über einen
zwischengeschalteten Server auf eine robuste Weise: Wenn zwei
Endpunkte einander aus irgendeinem Grund nicht erkennen können,
wird der Ruf über den Zentralserver gehalten.
6) IAX trennt die Caller-ID vom Authentifizierungsmechanismus
des Benutzers. SIP verfügt hierzu über keine eindeutige Methode,
sofern nicht Remote-Party-IDs verwendet werden.
7) SIP ist ein IETF-Standard. Zwar gibt es eine neue
Dokumentation von Frank Miller, aber IAX ist gegenwärtig noch
kein veröffentlichter Standard.
8) IAX ermöglicht es einem Endpunkt, die Gültigkeit einer
Telefonnummer zu überprüfen, damit er weiß, ob die Nummer
vollständig ist, vollständig sein könnte oder aber zwar
vollständig ist, aber länger sein könnte. SIP bietet hierfür
keine vollständige Unterstützung.
9) IAX sendet DTMF stets außerbandig, d.h., es kann keine
Verwirrung bezüglich der Frage entstehen, welche Methode verwendet
wird.
10) IAX unterstützt die Übertragung von Sprache und Context, was
in einer Asterisk-Umgebung durchaus sinnvoll ist. Mehr fällt mir
jetzt im Moment nicht ein.
Mark
PS: Ich nehme mal an, dass SIP trotzdem ein paar Vorteile
aufweisen muss (andernfalls wären seine Entwickler ja Dummköpfe).
Es bleibt also zu fragen, wie IAX die folgenden Aspekte verwaltet:
1) Bandbreitenanzeige
2) Neue Codecs
3) Erweiterbarkeit
4) Parken von Verbindungen und andere komplexe Szenarien
5) Videotelefonie
Ich habe den Eindruck, dass dies alles in SIP besser geregelt ist.
Nachtrag zu dieser E-Mail: IAX ist mittlerweile ein offenes und gut
dokumentiertes Protokoll.