Reglmässiger Fehler: chan_misd DIALSTATUS = CHANUNAVAIL

WolfgangA

Neuer User
Mitglied seit
16 Feb 2007
Beiträge
44
Punkte für Reaktionen
0
Punkte
0
Hallo,

chan_misdn gibt regelmässig (kann ein Tag/e oder Stunden sein), jedoch nicht vorhersagbar die Meldung DIALSTATUS = CHANUNAVAIL" zurück.
Wenn dieser Zustand erreicht ist, hilft nur noch ein Restart von Asterisk.
Solange Asterisk nicht neu gestartet wird, bleibt der Fehler.
(Die mISDN treiber müssen nicht neu gestartet werden)

misdn show stacks und misdn show channels zeigt nichts Auffälliges.


Umgebung:
Asterisk 1.2.15 mit mISDN 1_1_1 und chan_misdn 0.3.1 rc29

Problem ist "DIALSTATUS = CHANUNAVAIL" obwohl channels frei sind.
Code:
   -- Executing NoOp("IAX2/xxx.xxx.xxx.226:59867-3", 
   -- Executing NoOp("IAX2/xxx.xxx.xxx.xxx:59867-3", "Incoming-_X:trunk_41 CallerID:"" <28> - Calling:1525") in new stack
    -- Executing AGI("IAX2/xxx.xxx.xxx.xxx:59867-3", "incoming.php|answered=1525&channel=41&rule=2") in new stack
    -- Launched AGI Script /var/lib/asterisk/agi-bin/incoming.php
    -- AGI Script Executing Application: (macro) Options: (did|2|DefaultOutgoingRule)
    -- Executing Dial("IAX2/xxx.xxx.xxx.xxx:59867-3", "Local/25@DefaultOutgoingRule") in new stack
    -- Called 25@DefaultOutgoingRule
    -- Executing AGI("Local/25@DefaultOutgoingRule-27ed,2", "dial.php|entity=&group=5&extension=25") in new stack
    -- Launched AGI Script /var/lib/asterisk/agi-bin/dial.php
    -- AGI Script Executing Application: (macro) Options: (dialout|25)
    -- Executing Set("Local/25@DefaultOutgoingRule-27ed,2", "TOUCH_MONITOR=20070309-133905_28-25") in new stack
    -- Executing ChanIsAvail("Local/25@DefaultOutgoingRule-27ed,2", "mISDN/g:ISDNPBX") in new stack
    -- Executing Set("Local/25@DefaultOutgoingRule-27ed,2", "OUTGOING_CHANNEL=mISDN/1") in new stack
    -- Executing NoOp("Local/25@DefaultOutgoingRule-27ed,2", "mISDN/1 - Callerid:28") in new stack
    -- Executing Dial("Local/25@DefaultOutgoingRule-27ed,2", "mISDN/1/25||gTW") in new stack
    -- Called 1/25
  == Everyone is busy/congested at this time (1:0/0/1)
    -- Executing NoOp("Local/25@DefaultOutgoingRule-27ed,2", "DIALSTATUS = CHANUNAVAIL") in new stack
    -- Executing Goto("Local/25@DefaultOutgoingRule-27ed,2", "s-CHANUNAVAIL|1") in new stack
    -- Goto (macro-dialout,s-CHANUNAVAIL,1)
    -- Executing Goto("Local/25@DefaultOutgoingRule-27ed,2", "s-CONGESTION|1") in new stack
    -- Goto (macro-dialout,s-CONGESTION,1)
    -- Executing PlayTones("Local/25@DefaultOutgoingRule-27ed,2", "congestion") in new stack
    -- AGI Script dial.php completed, returning 0
  == Auto fallthrough, channel 'Local/25@DefaultOutgoingRule-27ed,2' status is 'CHANUNAVAIL'
    -- Local/25@DefaultOutgoingRule-27ed,1 is circuit-busy
  == Everyone is busy/congested at this time (1:0/1/0)
    -- AGI Script incoming.php completed, returning 0
  == Auto fallthrough, channel 'IAX2/xxx.xxx.xxx.xxx:59867-3' status is 'CONGESTION'
    -- Hungup 'IAX2/xxx.xxx.xxx.xxx:59867-3'

Nach einen restart von Asterisk geht es erst wieder: "OUTGOING_CHANNEL=mISDN/1
Code:
Connected to Asterisk 1.2.15 currently running on:
Asterisk Ready.
    -- Remote UNIX connection
Verbosity is at least 3
    -- Accepting AUTHENTICATED call from xxx.xxx.xxx.xxx:
       > requested format = alaw,
       > requested prefs = (alaw|ulaw|gsm|ilbc|g729),
       > actual format = alaw,
       > host prefs = (alaw|ulaw|gsm|ilbc|g729),
       > priority = mine
    -- Executing NoOp("IAX2/xxx.xxx.xxx.xxx:54269-1", "Incoming-_X:trunk_41 CallerID:"" <28> - Calling:1525") in new stack
    -- Executing AGI("IAX2/xxx.xxx.xxx.xxx:54269-1", "incoming.php|answered=1525&channel=41&rule=2") in new stack
    -- Launched AGI Script /var/lib/asterisk/agi-bin/incoming.php
    -- AGI Script Executing Application: (macro) Options: (did|2|DefaultOutgoingRule)
    -- Executing Dial("IAX2/xxx.xxx.xxx.xxx:54269-1", "Local/25@DefaultOutgoingRule") in new stack
    -- Called 25@DefaultOutgoingRule
    -- Executing AGI("Local/25@DefaultOutgoingRule-13ab,2", "dial.php|entity=&group=5&extension=25") in new stack
    -- Launched AGI Script /var/lib/asterisk/agi-bin/dial.php
    -- AGI Script Executing Application: (macro) Options: (dialout|25)
    -- Executing Set("Local/25@DefaultOutgoingRule-13ab,2", "TOUCH_MONITOR=20070309-134106_28-25") in new stack
    -- Executing ChanIsAvail("Local/25@DefaultOutgoingRule-13ab,2", "mISDN/g:ISDNPBX") in new stack
    -- Executing Set("Local/25@DefaultOutgoingRule-13ab,2", "OUTGOING_CHANNEL=mISDN/1") in new stack
    -- Executing NoOp("Local/25@DefaultOutgoingRule-13ab,2", "mISDN/1 - Callerid:28") in new stack
    -- Executing Dial("Local/25@DefaultOutgoingRule-13ab,2", "mISDN/1/25||gTW") in new stack
    -- Called 1/25
P[ 1] We already have a channel (1)
    -- mISDN/1-u1 is proceeding passing it to Local/25@DefaultOutgoingRule-13ab,2
    -- Local/25@DefaultOutgoingRule-13ab,1 is proceeding passing it to IAX2/xxx.xxx.xxx.xxx:54269-1
    -- mISDN/1-u1 is ringing
    -- Local/25@DefaultOutgoingRule-13ab,1 is ringing
  == Spawn extension (macro-did, s, 1) exited non-zero on 'IAX2/xxx.xxx.xxx.xxx:54269-1' in macro 'did'
  == Spawn extension (macro-did, s, 1) exited non-zero on 'IAX2/xxx.xxx.xxx.xxx:54269-1'
  == Spawn extension (macro-dialout, s, 5) exited non-zero on 'Local/25@DefaultOutgoingRule-13ab,2' in macro 'dialout'
    -- Hungup 'IAX2/xxx.xxx.xxx.xxx:54269-1'
    -- AGI Script dial.php completed, returning 0


Hier die Konfiguration von mISDN (P2P / NT Mode)
Code:
Misdn General-Config:
 -> Version: chan_misdn-0.3.1-rc29
 -> misdn_init: /etc/misdn-init.conf -> debug: 0
 -> tracefile: /var/log/asterisk/misdn.log -> bridging: yes
 -> stop_tone_after_first_digit: yes -> append_digits2exten: yes
 -> dynamic_crypt: no                -> crypt_prefix: **
 -> crypt_keys: test,muh             -> ntdebugflags: 0
 -> ntdebugfile: /var/log/misdn-nt.log

[PORT 1]
 -> name: ISDNPBX                    -> allowed_bearers: all
 -> far_alerting: no                 -> rxgain: 0
 -> txgain: 0                        -> te_choose_channel: no
 -> pmp_l1_check: yes                -> reject_cause: 16
 -> block_on_alarm: no               -> hdlc: no
 -> context: trunk_39                -> language: de
 -> musicclass: default              -> callerid:
 -> method: standard                 -> dialplan: 0
 -> localdialplan: 0                 -> cpndialplan: 0
 -> nationalprefix: 0                -> internationalprefix: 00
 -> presentation: -1                 -> screen: -1
 -> always_immediate: no             -> nodialtone: no
 -> immediate: no                    -> senddtmf: yes
 -> hold_allowed: no                 -> early_bconnect: yes
 -> incoming_early_audio: no         -> echocancel: 128
 -> name: ISDNPBX                    -> need_more_infos: no
 -> nttimeout: no                    -> jitterbuffer: 4000
 -> jitterbuffer_upper_threshold: 0  -> callgroup:
 -> pickupgroup:                     -> msns: *
 -> ptp: yes

[PORT 2]
 -> name: ISDNPBX                    -> allowed_bearers: all
 -> far_alerting: no                 -> rxgain: 0
 -> txgain: 0                        -> te_choose_channel: no
 -> pmp_l1_check: yes                -> reject_cause: 16
 -> block_on_alarm: no               -> hdlc: no
 -> context: trunk_39                -> language: de
 -> musicclass: default              -> callerid:
 -> method: standard                 -> dialplan: 0
 -> localdialplan: 0                 -> cpndialplan: 0
 -> nationalprefix: 0                -> internationalprefix: 00
 -> presentation: -1                 -> screen: -1
 -> always_immediate: no             -> nodialtone: no
 -> immediate: no                    -> senddtmf: yes
 -> hold_allowed: no                 -> early_bconnect: yes
 -> incoming_early_audio: no         -> echocancel: 128
 -> name: ISDNPBX                    -> need_more_infos: no
 -> nttimeout: no                    -> jitterbuffer: 4000
 -> jitterbuffer_upper_threshold: 0  -> callgroup:
 -> pickupgroup:                     -> msns: *
 -> ptp: yes

[PORT 3]
 -> name: ISDNPBX                    -> allowed_bearers: all
 -> far_alerting: no                 -> rxgain: 0
 -> txgain: 0                        -> te_choose_channel: no
 -> pmp_l1_check: yes                -> reject_cause: 16
 -> block_on_alarm: no               -> hdlc: no
 -> context: trunk_39                -> language: de
 -> musicclass: default              -> callerid:
 -> method: standard                 -> dialplan: 0
 -> localdialplan: 0                 -> cpndialplan: 0
 -> nationalprefix: 0                -> internationalprefix: 00
 -> presentation: -1                 -> screen: -1
 -> always_immediate: no             -> nodialtone: no
 -> immediate: no                    -> senddtmf: yes
 -> hold_allowed: no                 -> early_bconnect: yes
 -> incoming_early_audio: no         -> echocancel: 128
 -> name: ISDNPBX                    -> need_more_infos: no
 -> nttimeout: no                    -> jitterbuffer: 4000
 -> jitterbuffer_upper_threshold: 0  -> callgroup:
 -> pickupgroup:                     -> msns: *
 -> ptp: yes

[PORT 4]
 -> name: ISDNPBX                    -> allowed_bearers: all
 -> far_alerting: no                 -> rxgain: 0
 -> txgain: 0                        -> te_choose_channel: no
 -> pmp_l1_check: yes                -> reject_cause: 16
 -> block_on_alarm: no               -> hdlc: no
 -> context: trunk_39                -> language: de
 -> musicclass: default              -> callerid:
 -> method: standard                 -> dialplan: 0
 -> localdialplan: 0                 -> cpndialplan: 0
 -> nationalprefix: 0                -> internationalprefix: 00
 -> presentation: -1                 -> screen: -1
 -> always_immediate: no             -> nodialtone: no
 -> immediate: no                    -> senddtmf: yes
 -> hold_allowed: no                 -> early_bconnect: yes
 -> incoming_early_audio: no         -> echocancel: 128
 -> name: ISDNPBX                    -> need_more_infos: no
 -> nttimeout: no                    -> jitterbuffer: 4000
 -> jitterbuffer_upper_threshold: 0  -> callgroup:
 -> pickupgroup:                     -> msns: *
 -> ptp: yes

Ist dieses Problem bekannt?
Ist chan_misdn-0.4.0-rc28.tar.gz im Hinblick auf diesen Effekt möglicherweise "stabiler"?
 
misd restart port x hilft - aber...

Ok,

nach einigem Testem folgendes:
Wenn der Fehler "chanunvailable" auftritt, obwohl hinreichen misdn channel frei sind, hilft (neben einem restart von asterisk):
"misdn restart port 1"
"misdn restart port 2"
"misdn restart port 3"
"misdn restart port 4"

Anbei ein paar Logs dazu. Man sieht wieder DIALSTATUS = CHANUNAVAIL. Ports sind Up und frei.
Code:
CLI> misdn show stacks
BEGIN STACK_LIST:
  * Port 1 Type NT Prot. PTP L2Link UP L1Link:UP Blocked:0  Debug:0
  * Port 2 Type NT Prot. PTP L2Link UP L1Link:UP Blocked:0  Debug:0
  * Port 3 Type NT Prot. PTP L2Link UP L1Link:UP Blocked:0  Debug:0
  * Port 4 Type NT Prot. PTP L2Link UP L1Link:UP Blocked:0  Debug:0

CLI> misdn show channels
Chan List: (nil)

    -- Accepting AUTHENTICATED call from XXXXXXXXXXXX:
       > requested format = alaw,
       > requested prefs = (alaw|ulaw|gsm|ilbc|g729),
       > actual format = alaw,
       > host prefs = (alaw|ulaw|gsm|ilbc|g729),
       > priority = mine
    -- Executing AGI("IAX2/15621-5", "dial.php|entity=&group=5&extension=28") in new stack
    -- Launched AGI Script /var/lib/asterisk/agi-bin/dial.php
    -- AGI Script Executing Application: (macro) Options: (dialout|28)
    -- Executing Set("IAX2/15621-5", "TOUCH_MONITOR=20070316-114709_15621-28") in new stack
    -- Executing ChanIsAvail("IAX2/15621-5", "mISDN/g:ISDNPBX") in new stack
    -- Executing Set("IAX2/15621-5", "OUTGOING_CHANNEL=mISDN/1") in new stack
    -- Executing NoOp("IAX2/15621-5", "mISDN/1") in new stack
    -- Executing Dial("IAX2/15621-5", "mISDN/1/28||gTW") in new stack
    -- Called 1/28
  == Everyone is busy/congested at this time (1:0/0/1)
    -- Executing NoOp("IAX2/15621-5", "DIALSTATUS = CHANUNAVAIL") in new stack
    -- Executing Goto("IAX2/15621-5", "s-CHANUNAVAIL|1") in new stack
    -- Goto (macro-dialout,s-CHANUNAVAIL,1)
    -- Executing Goto("IAX2/15621-5", "s-CONGESTION|1") in new stack
    -- Goto (macro-dialout,s-CONGESTION,1)
    -- Executing PlayTones("IAX2/15621-5", "congestion") in new stack
    -- AGI Script dial.php completed, returning 0
  == Auto fallthrough, channel 'IAX2/15621-5' status is 'CHANUNAVAIL'
    -- Hungup 'IAX2/15621-5'

CLI> misdn show stacks
BEGIN STACK_LIST:
  * Port 1 Type NT Prot. PTP L2Link UP L1Link:UP Blocked:0  Debug:0
  * Port 2 Type NT Prot. PTP L2Link UP L1Link:UP Blocked:0  Debug:0
  * Port 3 Type NT Prot. PTP L2Link UP L1Link:UP Blocked:0  Debug:0
  * Port 4 Type NT Prot. PTP L2Link UP L1Link:UP Blocked:0  Debug:0

CLI> misdn show channels
Chan List: (nil)

Nach einem Reset der Ports geht es wieder:
Code:
*CLI> misdn restart port 1
P[ 1] Restarting this port.
P[ 1] Stack:0x8faa748
*CLI> misdn restart port 2
P[ 2] Restarting this port.
P[ 2] Stack:0x8fb8348
*CLI> misdn restart port 3
P[ 3] Restarting this port.
P[ 3] Stack:0x8fc5658
*CLI> misdn restart port 4
P[ 4] Restarting this port.
P[ 4] Stack:0x8fd2a30
*CLI>

    -- Accepting AUTHENTICATED call from xxxxxxxxxxxx:
       > requested format = alaw,
       > requested prefs = (alaw|ulaw|gsm|ilbc|g729),
       > actual format = alaw,
       > host prefs = (alaw|ulaw|gsm|ilbc|g729),
       > priority = mine
    -- Executing AGI("IAX2/15621-3", "dial.php|entity=&group=5&extension=28") in new stack
    -- Launched AGI Script /var/lib/asterisk/agi-bin/dial.php
    -- AGI Script Executing Application: (macro) Options: (dialout|28)
    -- Executing Set("IAX2/15621-3", "TOUCH_MONITOR=20070316-114832_15621-28") in new stack
    -- Executing ChanIsAvail("IAX2/15621-3", "mISDN/g:ISDNPBX") in new stack
    -- Executing Set("IAX2/15621-3", "OUTGOING_CHANNEL=mISDN/1") in new stack
    -- Executing NoOp("IAX2/15621-3", "mISDN/1") in new stack
    -- Executing Dial("IAX2/15621-3", "mISDN/1/28||gTW") in new stack
    -- Called 1/28
P[ 1] We already have a channel (1)
    -- mISDN/1-u397 is proceeding passing it to IAX2/15621-3
    -- mISDN/1-u397 is ringing

leider kann man nicht sagen, wqann der Fehler wieder auftritt. Kann ein paar tage sein, oder auch ein paar Stunden. Es gibt neben der Meldung (CHANUNAVAIL) auch keine zusätzlichen Fehlermeldungen, die man überwachen könnte.
Es bleibt wirklich nur abzuwarten, bis ein User sagt: "Telefonie geht nicht."

Sieht so aus, als waere es ein Fehler in chan_misdn.
 
Hi!

Probier mal in der misdn.conf pmp_l1_check=no einzustellen.

lg Fips
 
Danke für Deinen Tipp. Jedoch hilft das in diesem Fall *wahrscheinlich* nicht weiter, denn der Layer 1 Link ist auch im Fehlerfall Up wie man hier sieht:
CLI> misdn show stacks
BEGIN STACK_LIST:
* Port 1 Type NT Prot. PTP L2Link UP L1Link:UP Blocked:0 Debug:0
* Port 2 Type NT Prot. PTP L2Link UP L1Link:UP Blocked:0 Debug:0
* Port 3 Type NT Prot. PTP L2Link UP L1Link:UP Blocked:0 Debug:0
* Port 4 Type NT Prot. PTP L2Link UP L1Link:UP Blocked:0 Debug:0
 
Kannst Du mal den Debuglevel von misdn höher setzen und die Ausgaben im Fehlerfall nochmal posten?
 
WolfgangA schrieb:
Danke für Deinen Tipp. Jedoch hilft das in diesem Fall *wahrscheinlich* nicht weiter, denn der Layer 1 Link ist auch im Fehlerfall Up
Ja, hast recht! Hat auch bei mir dann doch nicht geholfen.. ich habe gestern folgendes gemacht, und bis jetzt funktionierts:
bei eingehenden anrufen lass ich zuerst ein sip telefon läuten und nur wenn dort keiner ran geht, wird auf den isdn telefonen geklingelt. (mit freepbx)
vielleicht reichts aber auch, wenn du in extensions.conf ein waitfordigits oder simples wait einfügst, damit nicht "quasi gleichzeitig" auf beide isdn ports zugegriffen wird.

wär nur einen Versuch wert.. obs wirklich hilft weiß ich auch noch nicht.

lg Fips
 
Sobald ein User den Fehler meldet, werde ich in der CLI den Debug Output erhöhen und das Konsolen Log posten.
Wie ich schon sagte, leider tritt dieser Effekt nicht immer auf.
 
was mich ein bissel wundert ist wieso du bei deinen 4 PTP Ports nicht per Gruppe auf die Anlage wählst?

also:

dial(mISDN/g:ISDNPBX/1234)

?

ansonsten, wäre ein "misdn set debug 4" während des Problems (am besten schon vorher um in die Vergangenheit schauen zu können) wirklich hilfreich.
 
crich schrieb:
was mich ein bissel wundert ist wieso du bei deinen 4 PTP Ports nicht per Gruppe auf die Anlage wählst?

also:

dial(mISDN/g:ISDNPBX/1234)
Die aktuelle Frontend Software generiert das Dial-CMD noch nicht in dieser Form. Ich gebe es weiter.

ansonsten, wäre ein "misdn set debug 4" während des Problems (am besten schon vorher um in die Vergangenheit schauen zu können) wirklich hilfreich.

Ich aktiviere den Debug Output mit debug 4 und poste hier das Ergebnis sobald ein User den "Fehler" meldet.

Danke :)
 
Zuletzt bearbeitet:
Ich habe mit einem im ISDN Protokoll versierten Bekannten das Log analysiert. Er meint das möglicherweise die Gegenstelle und nicht mISDN / chan_misdn falsch reagiert.
Kann dazu Jemand fachkundiges etwas sagen?
 

Zurzeit aktive Besucher

Statistik des Forums

Themen
245,745
Beiträge
2,239,022
Mitglieder
372,918
Neuestes Mitglied
Bladekilt
Holen Sie sich 3CX - völlig kostenlos!
Verbinden Sie Ihr Team und Ihre Kunden Telefonie Livechat Videokonferenzen

Gehostet oder selbst-verwaltet. Für bis zu 10 Nutzer dauerhaft kostenlos. Keine Kreditkartendetails erforderlich. Ohne Risiko testen.

3CX
Für diese E-Mail-Adresse besteht bereits ein 3CX-Konto. Sie werden zum Kundenportal weitergeleitet, wo Sie sich anmelden oder Ihr Passwort zurücksetzen können, falls Sie dieses vergessen haben.