Asterisk-IAX-Trunk nach Update kaputt

Aus Knowledgebase
Version vom 2. Mai 2016, 17:44 Uhr von PoC (Diskussion | Beiträge) (Neu)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen

Nach einem Update von Asterisk (Debian 7) auf Debian 8 (Asterisk 11.13.1) funktionierte plötzlich der Trunk zwischen zwei Asterisken via VPN nicht mehr.

  • Status für beide Hosts ist UNREACHABLE.
  • Im Debugging zeigt sich der Fehler dergestalt, dass beide Seiten immer wieder ein IAX POKE senden, aber von der Gegenstelle scheinbar keine Antwort erhalten.
  • Wireshark oder tcpdump zeigen, dass die Pakete wechselweise ankommen.
  • MTU-Problem ist unwahrscheinlich, da die Pakete weniger als 100 Bytes haben.
  • Es kann vorkommen, dass nach einem Entladen und erneuen Laden des chan_iax2.so-Modules kurzzeitig eine möglicherweise auch einseitige Verbindung (Status REACHABLE) vorhanden ist, die spätestens beim nächsten Qualify wieder auf UNREACHABLE springt. Verdächtig war im vorliegenden Fall, dass eine Seite ca. 50 ms als Delay angezeigt hat, die andere ca. 530 ms.

Nach einiger Recherche hat sich herausgestellt, dass IAX recht timingempfindlich und eine im Asterisken vorhandene Timingquelle daher (inzwischen) zwingend notwendig ist.

module unload chan_iax2.so
module load res_timing_timerfd.so
module load chan_iax2.so

Damit war das Problem gelöst. Das Modul muss natürlich in der modules.conf zum Laden beim Starten des Asterisken hinzugefügt werden.

Dieser Fehler konnte nur auftreten, da ich kein Module-Autoloading in der modules.conf vom Asterisken gesetzt habe. (Weniger Angriffsfläche und weniger Speicherverbrauch durch unnötigen Code).

Weblinks