Verbindungsabbruch nach unbestimmter Zeit (einige Minuten)

Hallo zusammen,

ich bin schon etwas verzweifelt, denn ich dachte, mein MD-Setup funktioniert sehr gut - aber ich hätte längere Anrufe testen sollen, denn ich bekomme Verbindungsabbrüche nach 4…30min.

Zum Debuggen rufe ich die eigene Nummer über ein externes Amt an und nehme mit einer anderen Nebenstelle ab. Ich zeichne per sipgrep auf und habe ein peer debug im Asterisk CLI eingeschaltet. Nach mehreren Versuchen glaube ich, ein Muster zu sehen:

[CLI]
<— SIP read from UDP:109.199.182.241:5060 —>
SIP/2.0 503 Not Implemented - Fake Return Code
Call-ID: 3a6137527494d93a764d04c6644aa51e@192.168.9.33:5060
CSeq: 102 OPTIONS
From: “asterisk” <sip:asterisk@192.168.9.33>;tag=as72660247
To: <sip:sip.amplusvoice.de>;tag=00-08054-0ecde7fc-6cf2d28f0
Via: SIP/2.0/UDP 192.168.9.33:5060;received=172.20.29.208;rport=5060;branch=z9hG4bK4d29042e
Allow: ACK,BYE,CANCEL,INVITE,UPDATE,REFER,INFO,OPTIONS,MESSAGE,SUBSCRIBE,REGISTER
Server: Cirpack/v4.56 (gw_sip)
Content-Length: 0

<------------->
— (9 headers 0 lines) —
Really destroying SIP dialog ‘3a6137527494d93a764d04c6644aa51e@192.168.9.33:5060’ Method: OPTIONS
Reliably Transmitting (NAT) to 109.199.182.241:5060:
OPTIONS sip:sip.amplusvoice.de SIP/2.0
Via: SIP/2.0/UDP 192.168.9.33:5060;branch=z9hG4bK739e44a8;rport
Max-Forwards: 70
From: “asterisk” <sip:asterisk@192.168.9.33>;tag=as5eef450c
To: <sip:sip.amplusvoice.de>
Contact: <sip:asterisk@192.168.9.33:5060>
Call-ID: 28ba99e6279c6912156681226773a9a9@192.168.9.33:5060
CSeq: 102 OPTIONS
User-Agent: Asterisk PBX certified/11.6-cert16
Date: Tue, 11 Apr 2017 09:13:10 GMT
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO, PUBLISH
Supported: replaces, timer
Content-Length: 0

… dann kommt einiges an Re-Registration und dann

<------------->
— (8 headers 0 lines) —
Sending to 109.199.182.241:5060 (NAT)
Scheduling destruction of SIP dialog ‘060be246033b4e904eb1ddf444d73e75@192.168.9.33:5060’ in 6400 ms (Method: BYE)

<— Transmitting (NAT) to 109.199.182.241:5060 —>
SIP/2.0 200 OK
Via: SIP/2.0/UDP 109.199.182.241:5060;branch=z9hG4bK-IWOI-0c25f49e-0ba5f30a;received=109.199.182.241;rport=5060
From: <sip:099291234567@sip.amplusvoice.de>;tag=00-08016-0ecda337-6f0cca7d1
To: “ProtectEM” <sip:099291234567@192.168.9.33>;tag=as2d884993
Call-ID: 060be246033b4e904eb1ddf444d73e75@192.168.9.33:5060
CSeq: 245491431 BYE
Server: Asterisk PBX certified/11.6-cert16
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO, PUBLISH
Supported: replaces, timer
Content-Length: 0

<------------>
– Executing [h@sub_trunk-outgoing-1:1] Gosub(“SIP/zfLrOa2q7affa09-00000102”, “def_hangup,s,1(,ANSWER,CALL)”) in new stack
– Executing [s@def_hangup:1] NoOp(“SIP/zfLrOa2q7affa09-00000102”, “>>>def_hangup:: EXTEN: DIALSTATUS: ANSWER QUEUESTATUS: REASON: CALL”) in new stack
– Executing [h@sub_main-50:1] Gosub(“SIP/mdc_trunk_conf-1-00000104”, “def_hangup,s,1(50,CALL)”) in new stack
– Executing [s@def_hangup:1] NoOp(“SIP/mdc_trunk_conf-1-00000104”, “>>>def_hangup:: EXTEN: 50 DIALSTATUS: QUEUESTATUS: REASON: CALL”) in new stack
== Spawn extension (sub_trunk-outgoing-1, 099291234567, 11) exited non-zero on ‘SIP/zfLrOa2q7affa09-00000102’
== Spawn extension (sub_main-50, ext, 8) exited non-zero on ‘SIP/mdc_trunk_conf-1-00000104’
Really destroying SIP dialog ‘060be246033b4e904eb1ddf444d73e75@192.168.9.33:5060’ Method: BYE

Im Sipgrep sehe ich nur ein fröhliches “BYE” von allen Seiten… :frowning:

SIP-Optionen beim verwendeten Amt:
insecure=invite,port
dtmfmode=rfc2833
directmedia=no
registertimeout=300
disallow=all
allow=g722
allow=alaw
allow=ulaw
nat=force_rport,comedia

Dieser Fake Return Code hat ja offenbar etwas mit DTMF zu tun. Die Telefon liegen auf dem Tisch, niemand tippt, aber ein bißchen Geräusch nehmen sie natürlich auf.

Hat jemand eine Idee? Wie müsste ich debuggen, um den (wahren) Grund zu finden? Bin sehr dankbar für Unterstützung.

Gruß Peter

Hallo,

ggf. verlangt Dein Amt ein sip session refresh welches dann eventuell schief geht.

Versuche bitte mal “session-timers=refuse” in die Optionen Deines SIP Accounts einzutragen.
Ob Session Timers aktiv ist könnte ich Dir sagen wenn ich ein ganzes INVITE Paket sehen könnte (sipgrep oder ab 7.13.04 sngrep sind Dein Freunde…).

Gruß,

Thomas

Hallo Thomas,

vielen Dank - sngrep kannte ich nicht - genial!

Nach Aufzeichnung des gesamten Traffic inkl. RTP (sngrep -r) und Analyse mit Wireshark konnte ich trotzdem keinen Grund für die völlig zufälligen BYEs des Trunks finden. Jetzt habe ich die Lösung (hoffentlich wirklich) gefunden:

Der Trunk des Providers Amplus heißt sip.amplusvoice.de. Diese Adresse wird aber über ein (wie ich vermute) Loadbalancing mal auf 109.199.182.241 und mal auf 109.199.182.245 aufgelöst. Nachdem ich (endlich) eine der beiden IPs statt der symbolischen Host-Adresse eingetragen habe, bleiben die Verbindungen stehen. Ich vermute, dass irgendwo mal wieder ein DNS-Lookup passiert und dann zufällig die Adresse mal gleich und mal anders aufgelöst wird und dadurch die Verbindung zerbricht. Eine Analyse des kompletten Netztraffics mit Wireshark hätte das zeigen können. Dazu hätte ich dann einen Mirrored Port am Switch einrichten müssen. Mit sngrep finde ich das Problem nicht.

Anyway, ich bin froh, dass die Verbindung jetzt stehenbleibt, vielleicht hilft meine Erkenntnis ja, jemand von Euch Zeit und Ärger zu sparen.

Frohe Ostern, Gruß
Peter