Hangup when dealing with external exchange


I’m managing an Asterisk PBX with a simple SIP setup with three terminals peered and a trunk provided by Vodafone, working as expected with the majority of external private exchanges, but having a problem with those ISDN-based I think, please see the actual call network capture on UDP port 5060 of the Debian stretch box.

The server announces the functions and audio codecs supported to the proxy counterpart:

12:17:18.414546 IP (tos 0x0, ttl 64, id 13131, offset 0, flags [none], proto UDP (17), length 963)
    46.27.XXX.XXX.5060 > 217.130.XXX.XXX.5095: [udp sum ok] SIP, length: 935
	SIP/2.0 200 OK
	Via: SIP/2.0/UDP 217.130.XXX.XXX:5095;branch=z9hG4bKgith79002gu5hgkacea0sb0000g00.1;received=217.130.XXX.XXX
	From: <sip:902XXXXXX@remote.sip.host:5095>;tag=cb32302c
	To: "lab" <sip:+34918XXXXXX@remote.sip.host:5095>;tag=as669d9e3d
	Call-ID: 1e90cd473254d7d42463452d0fd5168e@remote.sip.host
	Server: Vodafone-H-500-s/v3.4.20
	Supported: replaces, timer
	Session-Expires: 10800;refresher=uas
	Contact: <sip:+34918XXXXXX@46.27.XXX.XXX:5060>
	Content-Type: application/sdp
	Require: timer
	Content-Length: 301
	o=root 521990630 521990630 IN IP4 46.27.XXX.XXX
	s=Asterisk PBX 13.14.1~dfsg-2+deb9u4
	c=IN IP4 46.27.XXX.XXX
	t=0 0
	m=audio 10162 RTP/AVP 8 0 3 101
	a=rtpmap:8 PCMA/8000
	a=rtpmap:0 PCMU/8000
	a=rtpmap:3 GSM/8000
	a=rtpmap:101 telephone-event/8000
	a=fmtp:101 0-16

The proxy acknowledges

12:17:18.440061 IP (tos 0x0, ttl 125, id 0, offset 0, flags [none], proto UDP (17), length 387)
    217.130.XXX.XXX.5095 > 46.27.XXX.XXX.5060: [udp sum ok] SIP, length: 359
	ACK sip:+34918XXXXXX@46.27.XXX.XXX:5060 SIP/2.0
	Via: SIP/2.0/UDP 217.130.XXX.XXX:5095;branch=z9hG4bKf3je61001glueqrtsmm0.1
	To: "lab" <sip:+34918XXXXXX@remote.sip.host:5095>;tag=as669d9e3d
	From: <sip:902XXXXXX@remote.sip.host:5095>;tag=cb32302c
	Call-ID: 1e90cd473254d7d42463452d0fd5168e@remote.sip.host
	CSeq: 1 ACK
	Max-Forwards: 68
	Content-Length: 0

And immediately hangs up

12:17:18.446047 IP (tos 0x0, ttl 125, id 0, offset 0, flags [none], proto UDP (17), length 567)
    217.130.XXX.XXX.5095 > 46.27.XXX.XXX.5060: [udp sum ok] SIP, length: 539
	BYE sip:+34918XXXXXX@46.27.XXX.XXX:5060 SIP/2.0
	Via: SIP/2.0/UDP 217.130.XXX.XXX:5095;branch=z9hG4bKgith79002gu5hgkacea0sd0000010.1
	To: "lab" <sip:+34918XXXXXX@remote.sip.host:5095>;tag=as669d9e3d
	From: <sip:902XXXXXX@remote.sip.host:5095>;tag=cb32302c
	Call-ID: 1e90cd473254d7d42463452d0fd5168e@remote.sip.host
	CSeq: 2 BYE
	Max-Forwards: 68
	Content-Length: 0
	Reason: Q.850;cause=111
	P-Charging-Vector: icid-value=5d95ba81040bd15680d68d79fab71621
	P-Charging-Function-Addresses: ccf="aaa://mm.remote.sip.host:3868;transport=tcp"

with a Q.850 status code 111, which means Protocol error, unspecified.

This happens in the very moment when the remote exchange executes divert after a keypad option. 111 is not much explicative of the problem…

Please note that the user agent is faked. I run Asterisk version 13.14.1

I would blame the destination PBX, but a SIP VoIP connection managed directly by the Vodafone router works well against the same phones…

Thanks in advance :wink:

You have provided SIP traces but claim the problem is with ISDN!

The BYE seems to have come from the other side.

Yes, it clearly comes from the other side, but I recall it worked if SIP was managed by the official provider router device… I don’t really know what kind of exchange the other side has, I will ammend the title, sorry.

Only the other side may know why their system aborted the call.