8.7. IAX
IAX[42] ist das Inter-Asterisk-eXchange-Protokoll, also das
Asterisk-eigene VoIP-Protokoll, das bevorzugt verwendet werden
soll.
8.7.1. Warum IAX?
Braucht die Welt eigentlich noch ein
VoIP-Protokoll, wo es doch schon SIP, H.323 etc. und eine Reihe
proprietärer Protokolle gibt? Darüber lässt sich natürlich streiten. IAX
hat aber einige Vorteile. Hier die wichtigsten, neben weiteren technischen
Details:
- Geringer Overhead: Im Vergleich zu beispielsweise SIP (und dem darin verwendeten RTP) hat IAX als reines UDP-Protokoll ein deutlich besseres Nutzdaten-Overhead-Verhältnis.
- NAT/Firewall-tauglich: Trotz solcher Hürden kann IAX problemlos Anrufe initiieren und entgegennehmen etc. Es muss nur ein einziger Firewall-Port freigegeben werden (bei SIP mindestens 3).
- Einfaches Protokoll: Es müssen keinerlei Strings geparst werden, was IAX kaum anfällig für Speicherüberläufe macht.
- Gesprächstransfers: Gespräche können sowohl über einen zentralen Server laufen als auch direkt zwischen zwei Teilnehmern.
- Trunking: Dadurch kann über die gleiche Datenleitung eine viel höhere Anzahl von simultanen Gesprächen geführt werden.
8.7.2. Beispiel für eine IAX-Konfiguration
Am Anfang der
iax.conf
steht immer der
Eintrag [general]
. Ähnlich wie bei der
sip.conf
werden im [general]
-Abschnitt
allgemeine Parameter übergeben. Darunter kommt dann die Definition der
einzelnen Channels.Als Beispiel für die Möglichkeiten des IAX-Protokolls verbinden
wir zwei voneinander unabhängige Telefonanlagen mit dem IAX-Protokoll. So
können Gespräche von der einen zur anderen Anlage geführt werden und
müssen nicht über das Festnetz geroutet werden.
Aufgabenstellung
Es gibt zwei Anlagen mit jeweils zwei Telefonen (1000 und
1001). Die Anlagen heißen
ast1
und ast2
. Jede
Anlage soll in der Lage sein, Gespräche an die andere Anlage mit dem
IAX-Protokoll zu übermitteln. Dazu wird eine Vorwahl benutzt. Die
Vorwahl 0901
verbindet zur Anlage ast1
, und
0902
verbindet zur Anlage ast2
. Die Anlage
ast1
besitzt in diesem Beispiel die IP-Adresse
192.168.0.101
und die Anlage ast2
die
IP-Adresse 192.168.0.102
.Konfiguration ast1
Die
iax.conf
enthält folgende Konfiguration:
[ast2] type = friend host = 192.168.0.102 secret = 1234 context = test-telefone permit = 0.0.0.0/0.0.0.0Die
extensions.conf
enthält folgende Konfiguration:
[via-asterisk2] exten => 09021000,1,Dial(IAX2/ast2/1000) exten => 09021001,1,Dial(IAX2/ast2/1001) ; ^ ^ ^ ^ ; | | | | ; virt.Vorwahl ext Verbindung ext
Konfiguration ast2
Die
iax.conf
enthält folgende Konfiguration:
[ast1] type = friend host = 192.168.0.101 secret = 1234 context = test-telefone permit = 0.0.0.0/0.0.0.0Die
extensions.conf
enthält folgende Konfiguration:
[via-asterisk1] exten => 09011000,1,Dial(IAX2/ast1/1000) exten => 09011001,1,Dial(IAX2/ast1/1001)
8.7.3. Globale Einstellungen
Die folgenden Parameter können nur im
[general]
-Teil
definiert werden, sind also gültig für alle Channels. Sie können hier
außerdem auch einige der in Abschnitt 8.7.4, „Channel-Einstellungen“
beschriebenen Einstellungen verwenden.bandwidth
bandwidth = [low|medium|high]
Dient als Gruppierung verschiedener Soundcodecs. Auf diese
Weise kann man einfacher bestimmte Situationen definieren. Das ist eine
komfortable Alternative zu
allow
und disallow
(„allow
“).high
- Erlaubt alle Codecs: G.723.1, GSM, ulaw (G.711), alaw, G.726, ADPCM, slinear, LPC10, G.729, Speex, iLBC. Sollte nur bei Verbindungen ab 10 Mbit/s verwendet werden.
medium
- Verbietet die Codecs slinear, ulaw und alaw.
low
- Verbietet zusätzlich die Codecs G.726 und ADPCM.
Beispiel:
bandwidth = low disallow = lpc10 ; hat schlechte Qualität
allow
allow = [all|Name des Codecs]
Bestimmte Soundcodecs können gezielt erlaubt
(
allow
) oder verboten (disallow
) werden.
Default ist allow=all
. Die möglichen Codecs sind:
g723.1
, gsm
, ulaw
,
alaw
, g726
, slinear
,
plc10
, adpcm
, g729
,
speex
, ilbc
, h261
,
h263
und der Platzhalter all
. Siehe auch
bandwidth
(„bandwidth
“)
für eine komfortable Einstellung. allow
und
disallow
können mehrmals verwendet werden und sind damit
eine Ausnahme.Beispiel:
disallow = all allow = ulaw allow = gsm
codecpriority
codecpriority = [caller|host|disabled|reqonly]
Definiert, welcher Teilnehmer einer eingehenden Verbindung die
höhere Priorität bei der Verhandlung des Soundcodecs hat. Default:
host.
caller
- Der Anrufer hat Vorrang vor dem Host.
host
- Der Host hat Vorrang vor dem Anrufer.
disabled
- Codec-Präferenzen werden nicht berücksichtigt.
reqonly
- Codec-Präferenzen werden ignoriert, und der Anruf wird nur dann akzeptiert, wenn der angeforderte Codec verfügbar ist.
Beispiel:
codecpriority = caller
authdebug
authdebug = [yes|no]
Standardmäßig ist ein minimales Debugging bei der Autorisierung
von IAX-Verbindungen eingestellt. Dies kann mit
authdebug=no
deaktiviert werden.Beispiel:
authdebug = no
autokill
autokill = [yes|Timeout in Millisekunden]
Falls
autokill
nicht gesetzt ist, versucht
Asterisk einen nicht erreichbaren Host sehr lange zu erreichen. Dies
kann bei vielen gleichzeitigen Versuchen (auf mehreren Channels) zu
Performance-Problemen führen. Mit autokill=yes
wird die
Verbindung nach 2000 Millisekunden abgebrochen. Alternativ kann man auch
die Anzahl der Millisekunden angeben.Beispiel:
autokill = 3500
amaflags
amaflags = [default|omit|billing|documentation]
AMA ist die Abkürzung für „Automatic Message
Accounting“ und spezifiziert uunter anderem Standardmechanismen
zur Erzeugung und Übermittlung von Anrufprotokollen (Call Data Records
bzw. Call Detail Records bzw. CDRs; auf Deutsch auch
Kommunikationsdatensatz, KDS, genannt).
Mit
omit
werden keine Aufzeichnungen
gemacht.Beispiel:
amaflags = billing
bindaddr
bindaddr = [IP-Adresse]
Definiert die IP-Adresse, auf der Verbindungsanfragen
beantwortet werden. Default:
0.0.0.0
für alle
Adressen.Beispiel:
bindaddr = 0.0.0.0
bindport
bindport = [Port-Nummer]
Definiert den Netzwerkport, auf dem Verbindungsanfragen
beantwortet werden. Der Default-Port für IAX (IAX2!) ist 4569 (IAX
Version 1: 5036).
Wichtig
Diese Einstellung muss immer vor dem
bindaddr
-Eintrag erfolgen!Beispiel:
bindport = 4569
delayreject
delayreject = [yes|no]
Diese Einstellung kann auf
yes
gesetzt werden, um
eventuelle Brute-Force-Attacken (zum Passwortknacken) abzuschwächen.
Dann wird nach jedem falschen Einlogversuch 1000 Millisekunden (also 1
Sekunde) gewartet, bis der nächste Versuch akzeptiert wird. Default:
no.
Beispiel:
delayreject = yes
language
language = [en|de|...]
Konfiguriert die Sprache für den entsprechenden Channel. Die
gobale Standardsprache ist Englisch. Die Sprache, die gesetzt ist, wird
vom Kanal als Informationselement gesendet. Diese Einstellung wird auch
von Anwendungen wie
SayNumber()
gelesen, die für
verschiedene Sprachen unterschiedliche Sprachbausteine
verwenden.Beispiel:
language = de
mailboxdetail
mailboxdetail = [yes|no]
Wenn
mailboxdetail
auf yes
gesetzt
ist, wird dem Apparat des Mailboxbenutzers die Anzahl der neuen (und die
der alten) Nachrichten übermittelt (zur Anzeige auf dem Display o. Ä.).
Ansonsten wird nur signalisiert, dass es neue Nachrichten gibt, ohne die
Anzahl zu nennen.Diese Einstellung ist bei neueren Asterisk-Versionen nicht mehr
verfügbar. Mittlerweile verhält sich Asterisk immer (standardkonform)
wie
mailboxdetail=yes.
Beispiel:
mailboxdetail = yes
tos
tos = [...]
ToS steht für „Type of Service“; das sind Flags im
IP-Header, die von manchen Routern ausgelesen und befolgt werden. Damit
kann das Routingverhalten optimiert werden. Die empfohlene Einstellung
für IAX ist
tos=ef
. ef steht für Expedited Forwarding, also
etwa Express-Übertragung, was nach geringer Latenz, geringer Verlustrate
und wenig Jitter verlangt. Default ist none
(wegen der
Rückwärtskompatibilität).Die Vielzahl der möglichen Werte soll hier nicht weiter
beschrieben werden, Wenn Sie sich dafür interessieren, lesen Sie die
Spezifizierung von Differentiated Services in RFC 2474 und die
IANA-DSCP[43]. Hier folgt nur ein ins Deutsche übersetzter Auszug aus
der Asterisk beiliegenden Datei
doc/README.tos
(1.2) / doc/ip-tos.txt
(1.4):Die zulässigen Werte für die tos*-Einstellungen
sind: be (best effort, die normale, geringste
Priorität), cs1 , af11 , af12 ,
af13 , cs2 , af21 ,
af22 , af23 , cs3 ,
af31 , af32 , af33 ,
cs4 , af41 , af42 ,
af42 , ef (expedited forwarding),
lowdelay (geringe Latenz), throughput
(Durchsatz), reliability (Zuverlässigkeit),
mincost (geringste monetäre Kosten), none
(wie be )Außerdem kann man auch deren numerische Pendants angeben (z.
B. tos=0x18 ).Die Werte lowdelay , throughput ,
reliability , mincost und none
sind veraltet und sollen nicht mehr verwendet werden, da sie das
ToS-Byte nach dem alten „IP precedence“-Modell aus RFC
791 und 1349 setzen.=========================================== Konfig.- Parameter Empfohlene Datei Einstellung ------------------------------------------- sip.conf tos_sip cs3 sip.conf tos_audio ef sip.conf tos_video af41 ------------------------------------------- iax.conf tos ef ------------------------------------------- iaxprov.conf tos ef =========================================== | ||
--doc/ip-tos.txt |
Beispiel:
tos = ef
adsi
adsi = [yes|no]
ADSI (Analog Display Services Interface)[46] sind verschiedene Datendienste für analoge Telefone mit
einem Display, z. B. blinkende LED/Anzeige im Display bei wartenden
Nachrichten etc.
Falls Sie kompatible Telefone haben, können Sie diesen Dienst
aktivieren.
Beispiel:
adsi = yes
register
register => username[:password]@remote-host
Ist unser Asterisk-Server nur über eine dynamische IP-Adresse
erreichbar (also kein DNS, sondern nur eine IP-Adresse), so muss er sich
bei jedem IP-Adresswechsel bei seiner Gegenstelle neu registrieren,
sonst weiß die Gegenstelle nicht, an welche IP-Adresse sie Gespräche
durchstellen soll. Dazu wird
register =>
verwendet.Beachten Sie, dass
register
-Angaben nur benutzt
werden, wenn das entfernte Ende Sie als Peer und
host=dynamic
eingestellt hat.Das grundlegende Format einer Registerangabe sieht wie folgt
aus:
register =>
username[:password]@remote-host
Alternativ können Sie, indem Sie den Namen eines geeigneten
RSA-Schlüssels[47] in eckige Klammern (
[]
) setzen, einen
RSA-Schlüssel spezifizieren:[48]register =>
username:[rsa-key-name]@remote-host
Standardmäßig werden Registeranfragen über Port 4569 gesendet.
Sie können aber durch Anhängen von
:Portnummer
(also z. B.
:4444
) an den Hostnamen explizit einen anderen
angeben.8.7.4. Channel-Einstellungen
Die folgenden Parameter können für die einzelnen Channel
definiert werden. Einige können aber auch im Abschnitt
[general]
verwendet werden.type
type = [user|peer|friend]
Legt fest, ob es sich um eine Verbindung zu einem
user
(z. B. einem Benutzer-Endgerät, das sich mit uns
verbindet) oder einem peer
(z. B. einem Gateway in ein
anderes Asterisk-Netzwerk, zu dem wir die Verbindung herstellen)
handelt. friend
ist eine Kurzschreibweise, um einen
user
und einen peer
mit den gleichen Angaben
zu definieren.Beispiel:
type = peer
Warnung
Wenn Sie nicht für alle User-Einträge
(
type=user
) IP-basierte Zugangsbeschränkungen (siehe
„permit
“) definiert haben, müssen Sie
in der iax.conf
einen Eintrag
[guest]
haben, bei dem Sie weder auth
noch
secret
angeben. Andernfalls können sich beliebige User
verbinden, indem sie ein Passwort erraten.Beispiel:
[guest] type=user callerid="IAX-Gast-Benutzer"
accountcode
accountcode = [Abrechnungsnummer]
Der angegebene String wird als Dateiname für die
Abrechnungsdateien im Verzeichnis
/var/log/asterisk/cdr-csv/
benutzt. Verwenden Sie
daher nur Kleinbuchstaben, Ziffern, den Bindestrich und den
Unterstrich.Beispiel:
accountcode = iax-hausmeister
bandwidth
bandwidth = [low|medium|high]
bandwidth
dient als Gruppierung verschiedener
Soundcodecs. Auf diese Weise kann man einfacher bestimmte Situationen
definieren (siehe „bandwidth
“).Beispiel:
bandwidth = low
allow
allow = [all|Name des Codecs]
Bestimmte Soundcodecs können gezielt erlaubt
(
allow
) oder verboten (disallow
) werden (siehe
„allow
“). Dabei ist zu beachten, das
eventuell im [general]
-Bereich erlaubte Codecs erst durch
ein disallow=all
wieder verboten werden müssen.Beispiel:
disallow = all allow = ulaw allow = gsm
codecpriority
codecpriority = [caller|host|disabled|reqonly]
Definiert, welcher Teilnehmer der Verbindung die höhere
Priorität bei der Verhandlung des Soundcodecs hat (siehe „
codecpriority
“).Beispiel:
codecpriority = caller
amaflags
amaflags = [default|omit|billing|documentation]
AMA ist die Abkürzung für „Automatic Message
Accounting“ und spezifiziert unter anderem Standardmechanismen
zur Erzeugung und Übermittlung von Anrufprotokollen (CDRs) (siehe „
amaflags
“).Beispiel:
amaflags = documentation
callerid
callerid = [Name[ <Nummer>]]
Mit
callerid
können Sie die angezeigte Caller-ID
für einen Nutzer oder ein Peer setzen. Wenn Sie ein Caller-ID-Feld für
einen Benutzer definieren, werden alle Anrufe, die auf diesem Kanal
eingehen, mit dieser Caller-ID verknüpft, unabhängig davon, was Ihnen
das andere Ende sendet. Das ist aus Sicherheitsgründen zu empfehlen
(außer, Sie vertrauen dem anderen Ende), da es sehr leicht möglich ist,
seine Caller-ID zu fälschen.Beispiel:
callerid = "Mark Spencer" <(256) 428
6000>
host
host=[Host|dynamic]
Als
host
wird entweder der Hostname oder die
IP-Adresse des anderen Rechners angegeben. Bei Hosts mit dynamisch
vergebenen (also wechselnden) IP-Adressen verwenden Sie den Sonderfall
host=dynamic
, vorzugsweise in Kombination mit der
Einstellung defaultip
(„defaultip
“).Beispiele:
host = 192.168.0.201
host = dynamic
defaultip
defaultip = [IP-Adresse]
Die
defaultip
-Einstellung ergänzt
host=dynamic
(siehe „host
“). Ist ein Host noch nicht bei Ihrem
Server angemeldet, versucht Asterisk, Nachrichten an die hier definierte
Standard-IP-Adresse zu schicken.Beispiel:
defaultip = 192.168.0.201
permit
permit = IP-Adresse[/Netzmaske]
permit
und deny
erlauben und
beschränken die IP-Adressen, von denen Verbindungen zum entsprechenden
Eintrag möglich sind. Üblicherweise wird zuerst ein
deny=0.0.0.0/0.0.0.0
(alle verbieten) vorangestellt und
dann mit permit
die erlaubte IP-Adresse oder ein Bereich
von Adressen freigegeben. Die Reihenfolge von deny
und
permit
ist entscheidend, und beide können für mehrere
Hosts/Bereiche auch mehrfach auftreten. Wenn genau ein Host gemeint ist,
können Sie die Netzmaske (wäre 255.255.255.255
)
weglassen.Dieses Beispiel erlaubt nur Verbindungen aus dem Bereich
192.168.0.*
(Netzmaske 24 Bits,
Klasse-C-Netzwerk):deny = 0.0.0.0/0.0.0.0 ; alle verbieten permit = 192.168.0.102/255.255.255.0 ; 192.168.0.* erlauben permit = 192.168.5.5 ; 192.168.5.5 erlauben
Alle erlauben bis auf
192.168.*.*
:permit = 0.0.0.0/0.0.0.0 ; alle erlauben deny = 192.168.0.0/255.255.0.0 ; 192.168.*.* verbieten
Das nächste Beispiel ist nicht sinnvoll, da zuerst
192.168.0.0
bis 192.168.0.127
verboten, dann
aber wieder alle erlaubt werden, was die erste
Regel überschreibt. So wird also nichts verboten:deny = 192.168.0.0/255.255.255.127 permit = 0.0.0.0/0.0.0.0 ; alle erlauben
auth
auth = [plaintext|md5|rsa]
Zum Identifizieren des anderen Peers/Users stehen drei Methoden
zur Auswahl:
plaintext
, md5
und
rsa
.plaintext
- Diese Methode ist sehr unsicher, da das Passwort im Klartext übertragen wird. Sie sollte daher nicht verwendet werden. Das Passwort wird mit
secret
(„secret
“) angegeben. md5
- In diesem Challenge/Response-Verfahren wird eine MD5-Prüfsumme übertragen. Das Passwort wird mit
secret
(„secret
“) angegeben. rsa
Mit
auth
legen Sie eine durch Komma getrennte
Liste von erlaubten Authentifizierungsmethoden fest.Beispiel:
auth = rsa,md5
Wenn Sie weder
auth
noch secret
angeben, bedeutet das, dass keine Authentifizierung notwendig
ist.inkeys
inkeys = [rsa-key:rsa-key:...]
Legt für die Authentifizierungsmethode
rsa
(siehe
„auth
“) den öffentlichen RSA-Schlüssel
des zu authentifizierenden Systems fest. Um mehr als einen RSA-Schlüssel
mit einer Benutzer-Kanaldefinition zu verknüpfen, trennen Sie die
Schlüsselnamen mit einem Doppelpunkt (:
). Jeder dieser
Schlüssel wird dann eine Verbindung für gültig erklären
können.Diese Schlüssel müssen als Dateien so benannt sein:
/var/lib/asterisk/keys/schluesselname
.pub
Beispiel:
inkeys = server-koblenz:server-bonn
outkey
outkey = [rsa-key]
Sie können die
outkey
-Option verwenden, um sich
bei einem Peer mithilfe eines RSA-Schlüssels zu authentifizieren. Für
ausgehende Authentifizierung kann nur ein RSA-Schlüssel verwendet
werden. Der outkey
wird nicht verteilt, er ist Ihr privater
Schlüssel und sollte 3DES-verschlüsselt sein.Diese Schlüssel müssen als Dateien so benannt sein:
/var/lib/asterisk/keys/schluesselname
.key
Beispiel:
outkey = privater-schluessel
mailbox
mailbox = [Mailboxname[@Mailbox-Context]]
Wenn Sie in einer Kanaldefinition einen Peer mit einer Mailbox
verknüpfen, wird Voicemail eine MWI-Nachricht (Message Waiting
Indication) an die Knoten am Ende dieses Kanals schicken. Befindet sich
die Mailboxnummer in einem anderen Voicemail-Context als
default
, können Sie sie als
mailbox@context
angeben. Um
mehrere Mailboxen mit einem einzigen Peer zu verknüpfen, müssen Sie den
mailbox
-Befehl mehrmals verwenden.Beispiel:
mailbox = 1000
language
language = [en|de|...]
Konfiguriert die Sprache für den entsprechenden Channel. Die
Standardsprache ist Englisch. Diese Einstellung wird von verschiedenen
Anwendungen wie z. B. der Voicemailbox oder auch der Applikation
SayNumber()
verwendet, um unterschiedliche Sprachbausteine
zu benutzen.Beispiel:
language = de
context
context = [Context]
Der Context soll dem Benutzer dieser Verbindung zugeordnet
werden.
Beispiel:
context = default
regcontext
regcontext = [Context]
Sie können einen Context definieren, der automatisch beim
ersten Registrieren eines Peers ausgeführt wird. Ist mit
regexten
keine Extension angegeben, so wird als
auszuführende Extension der Name des Peers benutzt. Dabei ist zu
beachten, dass Asterisk als Erstes automatisch ein NoOp
mit
der Priorität 1 ausführt. Als erste Priorität danach ist also die 2 zu
benutzen. Mehrere Contexte können nacheinander aufgeführt werden; als
Trennungszeichen wird ein &
verwendet.Beispiel:
regcontext = from-iax
regexten
regexten = [Nummer]
Wird in Verbindung mit
regcontext
verwendet, um
die Extension zu spezifizieren, die in dem konfigurierten Context
ausgeführt werden soll. Falls regexten
nicht explizit
konfiguriert ist, wird der Name des Peers als Extension
verwendet.Beispiel:
regexten = 3000
jitterbuffer
jitterbuffer = [yes|no]
Schaltet den Jitter-Buffer an oder aus (dies gilt bei
Verbindungen, bei denen Asterisk als Endgerät fungiert). Der
Jitter-Buffer gleicht unterschiedliche Laufzeiten der IP-Pakete
aus.
Der Jitter-Buffer hat eventuell Probleme bei eingeschaltetem
trunk
(siehe „trunk
“).Beispiel:
jitterbuffer = yes
forcejitterbuffer
forcejitterbuffer = [yes|no]
Normalerweise ist es die Aufgabe der Endgeräte, einen
Jitter-Buffer [49] einzurichten. Sollte dies aus irgendeinem Grund nicht oder
nur schlecht funktionieren (manche Geräte haben einen schlechten
Jitter-Buffer), kann man diesen Buffer auch auf Asterisk als VoIP-Brücke
aktivieren.
Beispiel:
forcejitterbuffer = yes
maxjitterbuffer
maxjitterbuffer = [Laenge in Millisekunden]
Mit diesem Parameter wird die maximale Größe des Jitter-Buffers
eingestellt. Sie sollten diesen Wert in der Regel nicht höher als 500
einstellen, sonst kann es zu Tonaussetzern kommen.
Beispiel:
maxjitterbuffer = 400
resyncthreshold
resyncthreshold=[Wert in Millisekunden]
Der Resynchronisierungsgrenzwert wird benutzt, um den
Jitter-Bufferneu zu takten bzw. neu abzustimmen, falls eine signifikante
Änderung über wenige Frames hinweg erkannt wird. Dabei wird angenommen,
dass der Veränderung eine Verwechslung von Zeitstempeln zugrunde liegt.
Der Resynchronisierungsgrenzwert ist definiert als die gemessene
Schwankung plus dem Wert von
resyncthreshold
, der in
Millisekunden angegeben wird.Beispiel:
resyncthreshold = 800
trunk
trunk = [yes|no]
Asterisk kann bei IAX-Verbindungen zu einer bestimmten
IP-Adresse (z. B. beim Verbinden von zwei Asterisk-Servern) alle Channels
über einen Trunk versehen. Dadurch wird der Overhead von mehreren
Verbindungen zu einer Adresse reduziert. Der Trunk-Modus funktioniert
nur mit geeigneter Hardware (Digium Zaptel) oder entsprechender
Emulationssoftware für Timing-Zwecke.[50]In Version 1.2.x arbeitet der Jitter-Buffer (siehe „
jitterbuffer
“) nicht gut bei eingeschaltetem
Trunk-Modus.Beispiel:
trunk = yes
trunkfreq
trunkfreq = [Wiederholrate in Millisekunden]
Mit
trunkfreq
wird in Millisekunden angegeben, wie
oft Trunk-Nachrichten gesendet werden. Gilt nur, wenn
trunk=yes
gesetzt wurde.Beispiel:
trunkfreq = 20
qualify
qualify = [yes|no|Zeit in Millisekunden]
Mit
qualify=yes
werden in festen Zeitabständen
Ping-Nachrichten an die entfernten Peers gesendet, um herauszufinden, ob
sie verfügbar sind und welche Latenz zwischen den Antworten liegt. Die
Peers antworten mit Pong-Nachrichten. Ein Peer wird als nicht erreichbar
angesehen, wenn innerhalb von 2000 ms noch keine Antwort vorliegt (um
diese Voreinstellung zu ändern, setzen Sie qualify
auf die
entsprechende Anzahl an Millisekunden, die auf eine Anwort gewartet
werden soll). Einige Endgeräte (bzw. deren Software) kommen nicht mit
diesen Nachrichten zurecht.Beispiel:
qualify = yes
qualifysmoothing
qualifysmoothing = [yes|no]
Stellt ein, ob für die Verfügbarkeitsprüfung durch
qualify
immer der Mittelwert der letzten beiden
Pong-Nachrichten verwendet werden soll. Hosts mit schlechter Verbindung
könnten sonst fälschlicherweise als nicht verfügbar eingestuft
werden.Beispiel:
qualifysmoothing = yes
Hier ist immer IAX2, also IAX Version 2 gemeint.
Wird per FSK (Frequency Shift Keying, dt.:
Frequenzumtastung) übertragen.
Asterisk-RSA-Schlüssel finden sich normalerweise in
/var/lib/asterisk/keys/
. Sie können mittels des
astkey
-Skripts eigene Schlüssel
generieren.Die eckigen Klammern sind hier Pflicht und nicht wie im
Rest des Buches als Optionsangabe zu lesen.
Jitter bezieht sich auf die variierende Latenz zwischen den
Datenpaketen. Bei zu großen Schwankungen kann es zu Tonausfällen
kommen.
[50] Zum Beispiel das bei Asterisk enthaltene Kernel-Modul
ztdummy
oder zaprtc
von Junghanns (http://www.junghanns.net/downloads/).