Hello everyone.
This is my first post in communitiy since I’m using Asterisk. There was no need for me to ask anything because I found it in community. I’ve been working with Asterisk for 10 years now and have been deploying numerous system for business and also for branch I’m working in and that is telecommunications.
So lets go to my problems.
Few weeks ago I’ve deployed central Asterisk system which connects different Telecom providers for big Call Center so my Asterisk acts like gateway. There is no local extension. I have connected 3 GSM Gateways on same local subnet, telecom providers (on dedicated link and over the Internet) and cloud call center provider over the Internet.
This call center has in peak 80 concurent calls for now and will grow. What is started to happen is that on some calls there is no RTP i one direction. Mostly there are outbound calls from cloud call center over my Asterisk to telecom providers. My client (call center) reported that out of 260 calls that they made 230 were bad where B side (called customer) was unable to hear A side (agent that called them).
I’ve been researching for weeks now and I can’t figure this out. When I had problems with audio or no audio or no audio in one direction that was affecting ALL calls and not some.
Asterisk 16.6.0 is installed on Debian 10, has 16 CPU, 12GB of RAM and 500GB disk space on fast Netapp storage and esxi, where Asterisk VM is located, are connected over 4 10Gbps iface fiber optics.
When in peak of calls (70-80 simultanious) there is only 1GB of RAM used, and 1 CPU in total.
I’ve tried playing with directmedia, canreinvite and directrtpsetup and nothing worked.
Some provider do not support directmedia so I had to turn it down.
Here is my sip.conf:
[general]
context=public
allowoverlap=no
udpbindaddr=0.0.0.0
tcpenable=no
tcpbindaddr=0.0.0.0
transport=udp
srvlookup=yes
jbenable=no
[mypbx]
usrname=user
secret=secret
host=10.xx.xx.xx
qualify=yes
type=friend
port=5060
nat=never
dtmfmode=inband
insecure=invite,port
canreinvite=no
[sipprovider]
disallow=all
allow=alaw:20
host=176.xx.xx.xx
nat=never
type=peer
dtmfmode=inband
qualify=yes
insecure=invite,port
canreinvite=yes
directmedia=yes
[cc1]
host=10.xx.xx.xx
qualify=yes
type=friend
port=5060
nat=no
dtmfmode=rfc2833
insecure=invite,port
canreinvite=no
[cc2]
host=10.xx.xx.xx
qualify=yes
type=friend
port=5060
nat=no
dtmfmode=rfc2833
insecure=invite,port
canreinvite=no
[cc3]
host=10.xx.xx.xx
qualify=yes
type=friend
port=5060
nat=no
dtmfmode=rfc2833
insecure=invite,port
canreinvite=no
[cc4]
host=10.xx.xx.xx
qualify=yes
type=friend
port=5060
nat=no
dtmfmode=rfc2833
insecure=invite,port
canreinvite=no
[cloudcc]
disallow=all
allow=alaw:20
allow=ulaw:20
allow=gsm
nat=no
host=194.xx.xx.xx
username=user
secret=secret
qualify=yes
type=peer
port=5186
dtmfmode=rfc2833
insecure=invite,port
canreinvite=yes
directmedia=yes
limit=20000
[cloudcc2]
disallow=all
allow=alaw:20
allow=ulaw:20
allow=gsm
nat=no
host=194.xx.xx.xx
username=user
secret=secret
qualify=yes
type=peer
port=5187
dtmfmode=rfc2833
insecure=invite,port
canreinvite=yes
directmedia=yes
limit=20000
[gsmAgw]
secret=secret
dtmfmode=rfc2833
canreinvite=no
host=dynamic
type=friend
port=5060
nat=no
qualify=yes
[gsmgw]
secret=secret
dtmfmode=rfc2833
canreinvite=no
host=dynamic
type=friend
nat=no
port=5060
qualify=yes
[gsmgw2]
secret=secret
dtmfmode=rfc2833
canreinvite=no
host=dynamic
type=friend
nat=no
port=5060
qualify=yes
[a1-sip1]
disallow=all
allow=alaw
remotesecret=secret
username=user
dtmfmode=inband
host=10.xx.xx.xx
type=peer
qualify=yes
canreinvite=no
[a1-sip2]
disallow=all
allow=alaw
remotesecret=secret
username=user
dtmfmode=inband
host=10.xx.xx.xx
type=peer
qualify=yes
canreinvite=no
[iptel]
secret=secret
fromuser=user
username=user
dtmfmode=rfc2833
host=public.ip
type=friend
port=5060
qualify=yes
canreinvite=no
fromdomain=some.domain
insecure=invite
[local-pbx-helper]
host=10.xx.xx.xx
qualify=yes
type=friend
port=5060
nat=no
dtmfmode=inband
insecure=invite,port
canreinvite=no
[ht]
disallow=all
allow=alaw:20
port=5060
insecure=invite,port
dtmfmode=rfc2833
qualify=yes
type=friend
host=192.xx.xx.xx
canreinvite=no
[nth]
type=friend
username=user
secret=secret
host=62.xx.xx.xx
port=5068
nat=no
insecure=port,invite
dtmfmode=rfc2833
canreinvite=no
qualify=yes
disallow=all
allow=alaw
[uni]
type=peer
disallow=all
allow=alaw
host=10.xx.xx.xx
insecure=invite,port
port=5060
dtmfmode=rfc2833
qualify=yes
canreinvite=no
There is no problems with GSM at all.
Here is rtp.conf:
;
; RTP Configuration
;
[general]
;
; RTP start and RTP end configure start and end addresses
;
; Defaults are rtpstart=5000 and rtpend=31000
;
rtpstart=10000
rtpend=31000
;
; Whether to enable or disable UDP checksums on RTP traffic
;
;rtpchecksums=no
;
; The amount of time a DTMF digit with no 'end' marker should be
; allowed to continue (in 'samples', 1/8000 of a second)
;
;dtmftimeout=3000
; rtcpinterval = 5000 ; Milliseconds between rtcp reports
;(min 500, max 60000, default 5000)
;
; Enable strict RTP protection. This will drop RTP packets that
; do not come from the source of the RTP stream. This option is
; enabled by default.
strictrtp=no
;
; Number of packets containing consecutive sequence values needed
; to change the RTP source socket address. This option only comes
; into play while using strictrtp=yes. Consider changing this value
; if rtp packets are dropped from one or both ends after a call is
; connected. This option is set to 4 by default.
; probation=8
;
; Whether to enable or disable ICE support. This option is disabled by default.
; icesupport=true
;
; Hostname or address for the STUN server used when determining the external
; IP address and port an RTP session can be reached at. The port number is
; optional. If omitted the default value of 3478 will be used. This option is
; disabled by default.
;
; e.g. stundaddr=mystun.server.com:3478
;
; stunaddr=
;
; Hostname or address for the TURN server to be used as a relay. The port
; number is optional. If omitted the default value of 3478 will be used.
; This option is disabled by default.
;
; e.g. turnaddr=myturn.server.com:34780
;
; turnaddr=
;
; Username used to authenticate with TURN relay server.
; turnusername=
;
; Password used to authenticate with TURN relay server.
; turnpassword=
When I was testing this setup I had no problems with audio at all but that was max of 5 calls over each trunk.
Can Asterisk handle such traffic? Am I missing something?
Every help is much appreciated.