[Home]

Summary:ASTERISK-28775: SRV fix for ASTERISK-28746 fails with Deutsche Telecom
Reporter:Michael Maier (micha)Labels:fax
Date Opened:2020-03-09 07:11:19Date Closed:
Priority:MajorRegression?
Status:Open/NewComponents:Resources/res_pjsip_outbound_registration
Versions:16.9.0 Frequency of
Occurrence
Related
Issues:
is related toASTERISK-28746 res_pjsip_outbound_registration keeps retrying the first entry in a SRV record set
Environment:Attachments:
Description:I just tested the new version 16.9.0.rc1 and promptly got an error with this patch. With Deutsche Telekom, you always get a SRV record set. On the other hand, you mostly have to register 3 numbers - each must be registered on its own - to the same destination. Therefore, on startup, there are 3 registers done to the same destination. Often, one of the three numbers fails to register on the first attempt and therefore, it is done twice.

With this patch, you're now using the second of usually 3 SRV entries and registration is done successfully (which would have worked too, if you would have used the first entry again, because it's just a very temporary problem) - but all succeeding calls (outgoing INVITEs) are now rejected (403 Forbidden), because they are going to the first entry of the SRV record set - which fails on Deutsche Telekom, because they await all subsequent actions to be done at the same server as the registration
was done.

Therefore, this patch is a no go for all users of Deutsche Telekom or any other provider relying on all actions to be done to always the same destination IP.

Therefore, please make this new feature switchable or add another feature, which takes care to always use the same destination IP as initially used for the registration. You have to take care, too, that there is more than one number at the same time - but all of them using the same destination SRV hostname, but they could have different IP addresses - but each number must use its own IP which was initially used for the register.
Comments:By: George Joseph (gjoseph) 2020-03-09 07:24:34.549-0500

Michael,

Can you give me more info so I can create a test scenario for this?
endpoint, aor(s), registrations, and identifys.


By: Michael Maier (micha) 2020-03-09 10:59:29.120-0500

Some more information:

That's what you get for SRV from DNS:

dig +noall +answer _sips._tcp.tel.t-online.de SRV
_sips._tcp.tel.t-online.de. 767 IN SRV 20 0 5061 d-eps-100.edns.t-ipnet.de.
_sips._tcp.tel.t-online.de. 767 IN SRV 10 0 5061 hh-eps-110.edns.t-ipnet.de.
_sips._tcp.tel.t-online.de. 767 IN SRV 30 0 5061 h2-eps-100.edns.t-ipnet.de.

Following, you can find 3 accounts (numbers), which all have to be registered individually. Strictly speaking, it's one account, which registers 3 (or even more) numbers. They are all registered to tel.t-online.de. After registration, you have to take care, that all subsequent actions (like OPTIONS, INVITE, ...) must be sent to the same server you initially registered to.
The identification (and therefore the assignment to the correct trunk) of incoming calls is done via line option.

Registering to d-eps-100.edns.t-ipnet.de but sending an INVITE for an outgoing call later on to hh-eps-110.edns.t-ipnet.de fails, because hh-eps-110.edns.t-ipnet.de doesn't know anything about the registration to d-eps-100.edns.t-ipnet.de.
This wasn't any problem so far, because the Deutsche Telekom servers have been rock stable over many years now.

pjsip.aor.conf:
[telekomPJSIP-890]
type=aor
qualify_frequency=240
contact=sip:+491234567890@tel.t-online.de

[telekomPJSIP-141]
type=aor
qualify_frequency=240
contact=sip:+4924681012141@tel.t-online.de

[telekomPJSIP-821]
type=aor
qualify_frequency=240
contact=sip:+4936912151821@tel.t-online.de

pjsip.auth.conf:
[telekomPJSIP-890]
type=auth
auth_type=userpass
password=secret
username=+491234567890

[telekomPJSIP-141]
type=auth
auth_type=userpass
password=secret
username=+4924681012141

[telekomPJSIP-821]
type=auth
auth_type=userpass
password=secret
username=+4936912151821

pjsip.endpoint.conf:
[telekomPJSIP-890]
type=endpoint
transport=0.0.0.0-tls
context=from-pstn
disallow=all
allow=g722,alaw,ulaw
aors=telekomPJSIP-890
send_connected_line=yes
language=de
outbound_auth=telekomPJSIP-890
from_domain=tel.t-online.de
from_user=+491234567890
contact_user=+491234567890
t38_udptl=no
t38_udptl_ec=none
fax_detect=no
trust_id_inbound=no
t38_udptl_nat=no
direct_media=no
rewrite_contact=yes
media_encryption=sdes
rtp_symmetric=yes
dtmf_mode=rfc4733

[telekomPJSIP-141]
type=endpoint
transport=0.0.0.0-tls
context=from-pstn
disallow=all
allow=alaw,ulaw
aors=telekomPJSIP-141
send_connected_line=false
language=de
outbound_auth=telekomPJSIP-141
from_domain=tel.t-online.de
from_user=+4924681012141
contact_user=+4924681012141
t38_udptl=no
t38_udptl_ec=none
fax_detect=no
trust_id_inbound=no
t38_udptl_nat=no
direct_media=no
rewrite_contact=yes
media_encryption=sdes
rtp_symmetric=yes
dtmf_mode=rfc4733

[telekomPJSIP-821]
type=endpoint
transport=0.0.0.0-tls
context=from-pstn
disallow=all
allow=alaw,ulaw
aors=telekomPJSIP-821
send_connected_line=false
language=de
outbound_auth=telekomPJSIP-821
from_domain=tel.t-online.de
from_user=+4936912151821
contact_user=+4936912151821
t38_udptl=no
t38_udptl_ec=none
fax_detect=no
trust_id_inbound=no
t38_udptl_nat=no
direct_media=no
rewrite_contact=yes
media_encryption=sdes
rtp_symmetric=yes
dtmf_mode=rfc4733

pjsip.registration.conf:
[telekomPJSIP-890]
type=registration
transport=0.0.0.0-tls
outbound_auth=telekomPJSIP-890
retry_interval=60
fatal_retry_interval=0
forbidden_retry_interval=10
max_retries=10000
expiration=660
line=yes
endpoint=telekomPJSIP-890
auth_rejection_permanent=yes
contact_user=+491234567890
server_uri=sip:tel.t-online.de
client_uri=sip:+491234567890@tel.t-online.de

[telekomPJSIP-141]
type=registration
transport=0.0.0.0-tls
outbound_auth=telekomPJSIP-141
retry_interval=60
fatal_retry_interval=0
forbidden_retry_interval=10
max_retries=10000
expiration=660
line=yes
endpoint=telekomPJSIP-141
auth_rejection_permanent=yes
contact_user=+4924681012141
server_uri=sip:tel.t-online.de
client_uri=sip:+4924681012141@tel.t-online.de

[telekomPJSIP-821]
type=registration
transport=0.0.0.0-tls
outbound_auth=telekomPJSIP-821
retry_interval=60
fatal_retry_interval=0
forbidden_retry_interval=10
max_retries=10000
expiration=660
line=yes
endpoint=telekomPJSIP-821
auth_rejection_permanent=yes
contact_user=+4936912151821
server_uri=sip:tel.t-online.de
client_uri=sip:+4936912151821@tel.t-online.de

pjsip.identify.conf
[telekomPJSIP-890]
type=identify
endpoint=telekomPJSIP-890
match=127.0.0.10

[telekomPJSIP-141]
type=identify
endpoint=telekomPJSIP-141
match=127.0.0.10

[telekomPJSIP-821]
type=identify
endpoint=telekomPJSIP-821
match=127.0.0.10