[Gelöst] Asterisk 1.8, IAX2, Peer UNREACHABLE nach 1 Minute

udosw

Aktives Mitglied
Mitglied seit
20 Mrz 2004
Beiträge
1,114
Punkte für Reaktionen
0
Punkte
36
Ich versuche, zwei Asterisk-Server per IAX miteinander zu verbinden. Beide Server sind im gleichen Netz, kein NAT, keine Firewall. Bis Asterisk 1.6.x ging das immer problemlos. Jetzt ist einer der Server v1.8.x, und es klappt nicht mehr.

Folgende Konfiguration habe ich versucht:

iax.conf auf Server 1, Asterisk 1.2.34-BRIstuffed (diesen kann ich nicht updaten)
Code:
[server2]
type    = friend
host    = 10.20.3.4
trunk   = no
secret  = merksdir
context = out
qualify = yes
requirecalltoken = no
iax.conf auf Server 2, Asterisk 1.8.24
Code:
[server1]
type    = friend
host    = 10.20.3.5
trunk   = no
secret  = merksdir
context = out
qualify = yes
requirecalltoken=no
Wenn ich Server 2 neu starte, ist die Verbindung zunächst für ca. 1 Minute ok
Code:
server2*CLI> iax2 show peers
Name/Username    Host                 Mask             Port          Status    
server1           10.20.3.4       (S)  [URL="http://bell2.voip.intern/gemeinschaft/srv/pb-dial.php?n=2552552552554569&sudo=usw"]255.255.255.255  4569[/URL]          OK (22 ms)
Nach ca. 1 Minute geht sie in den Status UNREACHABLE

Das Verhalten lässt sich wie folgt reproduzieren:

Code:
server2*CLI> module unload chan_iax2.so 
Unloaded chan_iax2.so
server2*CLI> module load chan_iax2.so
Loaded chan_iax2.so
server2*CLI> iax2 show peers
Name/Username    Host                 Mask             Port          Status    
server1         10.20.3.4       (S)  [URL="http://bell2.voip.intern/gemeinschaft/srv/pb-dial.php?n=2552552552554569&sudo=usw"]255.255.255.255  4569[/URL]          OK (6 ms) 
1 iax2 peers [1 online, 0 offline, 0 unmonitored]
Danach dauert es wieder ca. 1 Minute und ...
Code:
NOTICE[27378]: chan_iax2.c:12055 __iax2_poke_noanswer: Peer 'server1' is now UNREACHABLE! Time: 6

Weitere Versuche:
  • zwei Asterisk 1.8.24-Server: gleiches Verhalten.
  • der alte Asterisk 1.2 ist mit 3 Iaxmodems verbund (Faxempfang). Wenn ich eines der Iaxmodems mit dem Ast. 1.8.x verbinde: UNREACHABLE
  • in der iax.conf mit register => user:passwort@server gearbeitet: gleiches Verhalten
  • in der iax.conf qualifysmoothing = yes: gleiches Verhalten
  • in der iax.conf qualify = no: kein UNREACHABLE, aber Anrufe timen aus.

IAX Debug auf Server 2:
Code:
Tx-Frame Retry[001] -- OSeqno: 000 ISeqno: 000 Type: IAX     Subclass: POKE   
   Timestamp: 00011ms  SCall: 00663  DCall: 00000 [10.20.3.4:4569]

Tx-Frame Retry[000] -- OSeqno: 000 ISeqno: 000 Type: IAX     Subclass: POKE   
   Timestamp: 00010ms  SCall: 03038  DCall: 00000 [10.20.3.4:4569]

Tx-Frame Retry[001] -- OSeqno: 000 ISeqno: 000 Type: IAX     Subclass: POKE   
   Timestamp: 00010ms  SCall: 03038  DCall: 00000 [10.20.3.4:4569]

Tx-Frame Retry[000] -- OSeqno: 000 ISeqno: 000 Type: IAX     Subclass: POKE   
   Timestamp: 00009ms  SCall: 00082  DCall: 00000 [10.20.3.4:4569]

Tx-Frame Retry[001] -- OSeqno: 000 ISeqno: 000 Type: IAX     Subclass: POKE   
   Timestamp: 00009ms  SCall: 00082  DCall: 00000 [10.20.3.4:4569]

D.h. Server 2 empfängt offenbar keine IAX-Pakete (?)

IAX Debug auf Server 1
Code:
[2013-12-10 15:56:21] Rx-Frame Retry[ No] -- OSeqno: 000 ISeqno: 000 Type: IAX     Subclass: POKE   
[2013-12-10 15:56:21]    Timestamp: 00014ms  SCall: 03049  DCall: 00000 [10.20.3.5:4569]
[2013-12-10 15:56:21] 
[2013-12-10 15:56:22] Rx-Frame Retry[Yes] -- OSeqno: 000 ISeqno: 000 Type: IAX     Subclass: POKE   
[2013-12-10 15:56:22]    Timestamp: 00014ms  SCall: 03049  DCall: 00000 [10.20.3.5:4569]
[2013-12-10 15:56:22] 
[2013-12-10 15:56:41] Rx-Frame Retry[ No] -- OSeqno: 000 ISeqno: 000 Type: IAX     Subclass: POKE   
[2013-12-10 15:56:41]    Timestamp: 00013ms  SCall: 10558  DCall: 00000 [10.20.3.5:4569]
[2013-12-10 15:56:41] 
[2013-12-10 15:56:42] Rx-Frame Retry[Yes] -- OSeqno: 000 ISeqno: 000 Type: IAX     Subclass: POKE   
[2013-12-10 15:56:42]    Timestamp: 00013ms  SCall: 10558  DCall: 00000 [10.20.3.5:4569]

Es wäre schon sehr hilfreich für mich, wenn jemand eine funktionierende iax.conf auf einem Asterisk 1.8.x am Laufen hätte.

Udo
 
Ich hab hier auch das gleiche Problem mit einem Asterisk 1.8 .. hatte den Server neu aufgesetzt und versehentlich ein 32-Bit Debian 7.2 mit PAE-Kernel erwischt. Als ich vorher das 64-Bit Debian 7.2 drauf hatte ging die gleiche Konfiguration ohne Probleme. Ob es wirklich an der Debianverison liegt? Was hast du auf dem Server laufen?
 
Alles 64bit-Systeme:
Code:
 Welcome to Ubuntu 12.04.3 LTS (GNU/Linux 3.2.0-57-generic x86_64)
Linux server2 3.2.0-57-generic #87-Ubuntu SMP Tue Nov 12 21:35:10 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
Nur der alte Asterisk 1.2 nicht:
Code:
Linux server1 2.6.22.19 #1 SMP PREEMPT Thu Mar 5 09:53:59 CET 2009 i686 pentium4 i386 GNU/Linux
Auch die anderen 1.8.x * sind auf 64bit Ubuntus.
Udo
 
Danke @waldoo, das war die Lösung: https://issues.asterisk.org/jira/browse/ASTERISK-20963

Das Lesen von https://wiki.asterisk.org/wiki/display/AST/Timing+Interfaces war dann sehr erhellend, und ich habe mich dann für res_timing_pthread.so entschieden, weil dieser Timer ja von der Performance her der Beste sein soll.

Warum allerdings in Gemeinschaft bzw. Loca.Phone in der modules.conf dier Timer explizit nicht geladen wird, erschließt sich mir nicht ...

Code:
; do not load broken timing modules by default
noload => res_timing_pthread.so
noload => res_timing_timerfd.so
Ich hab jetzt
Code:
noload => res_timing_dahdi.so
load => res_timing_timerfd.so
eingestellt, und iax läuft wieder stabil. Weitere Timer abhängige Sachen muss ich aber noch testen.

Udo
 
Kostenlos!

Statistik des Forums

Themen
248,872
Beiträge
2,303,461
Mitglieder
378,532
Neuestes Mitglied
Nik320