Страница 1 из 2

Как настроить SIP транк Белтелекома 2017 на вх > 5 мин?

Добавлено: 23 июн 2017, 12:59
alex_k
Добрый день.

Подскажите пожалуйста, как настроить транк от Белтелекома , что бы при входящем звонке не обрывался голос в канале после 5й минуты. При исходящем такой проблемы нет.

Характеристики сервера
PRIME_BBCODE_SPOILER_SHOW PRIME_BBCODE_SPOILER:
CentOS Linux release 7.3.1611
Asterisk 13.10.0
Module Description Use Count Status Support Level
res_srtp.so Secure RTP (SRTP) 0 Running core
FreePBX 13.0.192.9
настройки транка
PRIME_BBCODE_SPOILER_SHOW PRIME_BBCODE_SPOILER:
type=friend
secret=*******
nat=force_rport,comedia
insecure=invite,port
host=93.85.255.188
fromuser=+375249000000
fromdomain=ims.beltel.by
encryption=no
disallow=all
directmedia=no
defaultuser=+375249000000@ims.beltel.by
allow=alaw&ulaw

+375249000000@ims.beltel.by:******:+375249000000@ims.beltel.by@93.85.255.188/+375249000000
sip.conf
PRIME_BBCODE_SPOILER_SHOW PRIME_BBCODE_SPOILER:
vmexten=*97
useragent=FPBX-13.0.192.9(13.10.0)
disallow=all
allow=ulaw
allow=alaw
allow=gsm
allow=g726
context=from-sip-external
callerid=Unknown
notifyringing=yes
notifyhold=yes
tos_sip=cs3
tos_audio=ef
tos_video=af41
alwaysauthreject=yes
limitonpeers=yes
tcpenable=no
rtpstart=10000
context=from-sip-external
rtpend=20000
callevents=no
bindport=5060
jbenable=no
rtptimeout=30
rtpkeepalive=0
rtpholdtimeout=360
videosupport=no
srvlookup=yes
tlsenable=no
tlsbindaddr=0.0.0.0:5061
tlsclientmethod=tlsv1
tlsdontverifyserver=no
registertimeout=20
registerattempts=0
allowguest=no
canreinvite=no
defaultexpiry=120
g726nonstandard=no
maxcallbitrate=384
maxexpiry=3600
minexpiry=1200
notifyringing=yes
notifyhold=yes
checkmwi=10
nat=no
ALLOW_SIP_ANON=no
callerid=Unknown

Погугливши нашел такие статьи и на основе их дописал в sip.conf session-timers session-refresher и session-minse
https://voxlink.ru/kb/itsp-connection/b ... eltelecom/
https://asterisk.biz.ua/novosti/sip-trank-beltelekom/

если session-minse=1200 то моя атс отвечат 422 (Session Interval Too Small) белтелекому и клиента не слышно с первой секунды.

поэтому добавил в sip.conf
session-timers=originate
session-refresher=uac
session-minse=600

375249000000=внешний номер Белтелекома
375297111111=мобильный
xx.xx.xx.135=ip добавочного 106
xx.xx.69.65=ip атс

C этими настройками при исходящем звонке проблем нет, даже после 10й минуты (больше не тестил, но думаю будет ок)
invite в начале разговора
PRIME_BBCODE_SPOILER_SHOW PRIME_BBCODE_SPOILER:
2017/06/23 11:01:49.312272 xx.xx.xx.135:65313 -> xx.xx.69.65:5060
INVITE sip:375297111111@xx.xx.69.65:5060 SIP/2.0
Via: SIP/2.0/UDP xx.xx.xx.135:65313;rport;branch=z9hG4bKPjf4f7e655fd1646249153881ca4430007
Max-Forwards: 70
From: <sip:106@xx.xx.69.65>;tag=ec9564289ef44924ac35f59b96a2fafc
To: <sip:375297111111@xx.xx.69.65>;tag=as583ab8ab
Contact: <sip:106@xx.xx.xx.135:65313;ob>
Call-ID: 9671a1e8037244b9b7e707bd3b6c30fa
CSeq: 24723 INVITE
Allow: PRACK, INVITE, ACK, BYE, CANCEL, UPDATE, INFO, SUBSCRIBE, NOTIFY, REFER, MESSAGE, OPTIONS
Supported: replaces, 100rel, timer, norefersub
Session-Expires: 1800;refresher=uac
Min-SE: 90
Content-Type: application/sdp
Content-Length: 278

v=0
o=- 3707204503 3707204504 IN IP4 xx.xx.xx.135
s=pjmedia
b=AS:84
t=0 0
a=X-nat:0
m=audio 4008 RTP/AVP 0 101
c=IN IP4 xx.xx.xx.135
b=TIAS:64000
a=rtcp:4009 IN IP4 192.168.1.15
a=rtpmap:0 PCMU/8000
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-16
a=sendrecv

после 5й минуты http://joxi.ru/V2V5950F0EqRWm
PRIME_BBCODE_SPOILER_SHOW PRIME_BBCODE_SPOILER:
2017/06/23 11:06:48.739500 xx.xx.69.65:5060 -> 93.85.255.188:5060
INVITE sip:93.85.255.188:5060 SIP/2.0
Via: SIP/2.0/UDP xx.xx.69.65:5060;branch=z9hG4bK0c5e237f;rport
Max-Forwards: 70
From: "106" <sip:+375249000000@ims.beltel.by>;tag=as0d871969
To: <sip:+375297111111@93.85.255.188>;tag=sbc0509z8h00v20-CC-132
Contact: <sip:+375249000000@xx.xx.69.65:5060>
Call-ID: 6819891066ffc68a388fbe0012b0dd6d@ims.beltel.by
CSeq: 103 INVITE
User-Agent: FPBX-13.0.192.9(13.10.0)
Session-Expires: 600;refresher=uac
Min-SE: 600
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO, PUBLISH, MESSAGE
Supported: replaces, timer
Content-Type: application/sdp
Content-Length: 276

v=0
o=root 1177002021 1177002021 IN IP4 xx.xx.69.65
s=Asterisk PBX 13.10.0
c=IN IP4 xx.xx.69.65
t=0 0
m=audio 14008 RTP/AVP 0 8 101
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-16
a=ptime:20
a=maxptime:150
a=sendrecv
и после 10й
PRIME_BBCODE_SPOILER_SHOW PRIME_BBCODE_SPOILER:
2017/06/23 11:11:48.849916 xx.xx.69.65:5060 -> 93.85.255.188:5060
INVITE sip:93.85.255.188:5060 SIP/2.0
Via: SIP/2.0/UDP xx.xx.69.65:5060;branch=z9hG4bK7860db27;rport
Max-Forwards: 70
From: "106" <sip:+375249000000@ims.beltel.by>;tag=as0d871969
To: <sip:+375297111111@93.85.255.188>;tag=sbc0509z8h00v20-CC-132
Contact: <sip:+375249000000@xx.xx.69.65:5060>
Call-ID: 6819891066ffc68a388fbe0012b0dd6d@ims.beltel.by
CSeq: 104 INVITE
User-Agent: FPBX-13.0.192.9(13.10.0)
Session-Expires: 600;refresher=uac
Min-SE: 600
Allow: INVITE, ACK, CANCEL, OPTIONS, BYE, REFER, SUBSCRIBE, NOTIFY, INFO, PUBLISH, MESSAGE
Supported: replaces, timer
Content-Type: application/sdp
Content-Length: 276

v=0
o=root 1177002021 1177002021 IN IP4 xx.xx.69.65
s=Asterisk PBX 13.10.0
c=IN IP4 xx.xx.69.65
t=0 0
m=audio 14008 RTP/AVP 0 8 101
a=rtpmap:0 PCMU/8000
a=rtpmap:8 PCMA/8000
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-16
a=ptime:20
a=maxptime:150
a=sendrecv
Но при входящем
в начале разговора
PRIME_BBCODE_SPOILER_SHOW PRIME_BBCODE_SPOILER:
2017/06/23 11:13:46.209345 93.85.255.188:5060 -> xx.xx.69.65:5060
INVITE sip:+375249000000@xx.xx.69.65:5060 SIP/2.0
Via: SIP/2.0/UDP 93.85.255.188:5060;branch=z9hG4bKf9sdu69frtsfr45pm946tp6jqT23445
Call-ID: asbcgh8ava2azixiiiazv3iipijjpl1jzv10@ATS.ats02.ims.beltel.by.14
From: <tel:+375297111111>;tag=sbc0508hz1vxl0p-CC-14
To: <sip:+375249000000@93.85.255.188:5060;transport=udp;user=phone>;tag=as5d8487ab
CSeq: 2 INVITE
Contact: <sip:+375297111111@93.85.255.188:5060;user=phone>
Max-Forwards: 66
Supported: timer
Session-Expires: 600;refresher=uac
Min-SE: 600
Content-Length: 310
Content-Type: application/sdp

v=0
o=- 15113402 15113403 IN IP4 93.85.255.185
s=SBC call
c=IN IP4 93.85.255.185
t=0 0
m=audio 39060 RTP/SAVP 8
a=ptime:20
a=sendrecv
a=crypto:1 AES_CM_128_HMAC_SHA1_80 inline:V3AxVGw3QXo2WmkyRWMwU2UxSnEzVXc2VHMwQm4x
a=crypto:2 AES_CM_128_HMAC_SHA1_32 inline:V3AxVGw3QXo2WmkyRWMwU2UxSnEzVXc2VHMwQm4x
после 5й http://joxi.ru/DrlzXzxC4bxDD2
PRIME_BBCODE_SPOILER_SHOW PRIME_BBCODE_SPOILER:
2017/06/23 11:18:46.259510 93.85.255.188:5060 -> xx.xx.69.65:5060
INVITE sip:+375249000000@xx.xx.69.65:5060 SIP/2.0
Via: SIP/2.0/UDP 93.85.255.188:5060;branch=z9hG4bKd9tpujp4d5jq9j4qmn96fot5tT27204
Call-ID: asbcgh8ava2azixiiiazv3iipijjpl1jzv10@ATS.ats02.ims.beltel.by.14
From: <tel:+375297111111>;tag=sbc0508hz1vxl0p-CC-14
To: <sip:+375249000000@93.85.255.188:5060;transport=udp;user=phone>;tag=as5d8487ab
CSeq: 3 INVITE
Contact: <sip:+375297111111@93.85.255.188:5060;user=phone>
Max-Forwards: 69
Supported: timer
Session-Expires: 600;refresher=uac
Min-SE: 600
Content-Length: 310
Content-Type: application/sdp

v=0
o=- 15113402 15113403 IN IP4 93.85.255.185
s=SBC call
c=IN IP4 93.85.255.185
t=0 0
m=audio 39060 RTP/SAVP 8
a=ptime:20
a=sendrecv
a=crypto:1 AES_CM_128_HMAC_SHA1_80 inline:UWUyRGQzTXo4TGg0TngxSHM3QW8wSm83T28yUmwz
a=crypto:2 AES_CM_128_HMAC_SHA1_32 inline:UWUyRGQzTXo4TGg0TngxSHM3QW8wSm83T28yUmwz

Все параметры, по моему, подходящие и правильные. И пакеты RTP ходят. Клиент меня слышит, а я клиента нет.

Специалисты связи и asterisk-а, могли бы вы подсказать, где у меня ошибка?
приложил pcap файлы исходящего и входящего разговоров.

Re: Как настроить SIP транк Белтелекома 2017 на вх > 5 мин?

Добавлено: 23 июн 2017, 13:03
Vlad1983
при входящем реинвайт со сменой ключей шифрования RTP
у вас реинвайт запрещен глобально canreinvite=no
на какой пир матчится входящий?

Re: Как настроить SIP транк Белтелекома 2017 на вх > 5 мин?

Добавлено: 23 июн 2017, 15:52
alex_k
Vlad1983 писал(а):на какой пир матчится входящий?
т.е. настройки внутреннего?
[106]
PRIME_BBCODE_SPOILER_SHOW PRIME_BBCODE_SPOILER:
deny=0.0.0.0/0.0.0.0
secret=********
dtmfmode=rfc2833
canreinvite=no
context=from-internal
host=dynamic
defaultuser=
trustrpid=yes
sendrpid=pai
type=friend
session-timers=accept
nat=force_rport,comedia
port=5060
qualify=yes
qualifyfreq=60
transport=udp
avpf=no
force_avp=no
encryption=no
namedcallgroup=
namedpickupgroup=
dial=SIP/106
permit=0.0.0.0/0.0.0.0
callerid=106 <106>
callcounter=yes
faxdetect=no
сменил на canreinvite=yes
ситуация не поменялась http://joxi.ru/52an6nWHG9WKgA

я очень плохо плаваю в теме "смены ключей шифрования" и т.п.

Re: Как настроить SIP транк Белтелекома 2017 на вх > 5 мин?

Добавлено: 23 июн 2017, 16:37
ded
session-timers=originate
session-refresher=uac
означает, что отсчёт таймера сессии возлагается на оригинатора, а refreh делает клиентский юзер агент (UA) а не сервер. Поэтому при исходящем звонке проблем нет. Кроме того, в ваших дампах при исходящих вообще нет ключей шифрования.

При входящем после 5-1 минуты Вы показали, что прибегает INVITE. В обычной жизни такого не происходит, INVITE прибегает только в начале разговора, создаётся сессия RTP которая разбивается только если BYE с одной из сторон, или RTCP гасит её если тишина в канале, нет трафика (по каким-то причинам).

Повторный INVITE, который у вас на 5-й минуте - это и есть reinvite, который, по определению, запрещён параметрм canreinvite=no на пире (а не на экстене).
Обычно в reinvite передают, напримр, другие параметры соединения RTP, напрямую между абонентами, минуя Астериск. В этом же случае, завязавшийся входящий разговор шифруется протоколом SRTP при помощи ключей
a=crypto:1 AES_CM_128_HMAC_SHA1_80 inline:V3AxVGw3QXo2WmkyRWMwU2UxSnEzVXc2VHMwQm4x
a=crypto:2 AES_CM_128_HMAC_SHA1_32 inline:V3AxVGw3QXo2WmkyRWMwU2UxSnEzVXc2VHMwQm4x
которые и передаются в пакете INVITE.
Через 5 минут прибегает второй INVITE, с другими ключами, он, видимо, игнорируется, и слышимость пропадает.

Re: Как настроить SIP транк Белтелекома 2017 на вх > 5 мин?

Добавлено: 24 июн 2017, 09:03
virus_net

Re: Как настроить SIP транк Белтелекома 2017 на вх > 5 мин?

Добавлено: 26 июн 2017, 12:42
Vlad1983
подозреваю что для chan_sip проблема не решаемая
варианты:
1) попробовать chan_pjsip только для этого транка
2) если п.1 не помог, попробовать FreeSWITCH в качестве промежуточного звена

Re: Как настроить SIP транк Белтелекома 2017 на вх > 5 мин?

Добавлено: 26 июн 2017, 13:01
ded
Владимир, это не первое подключение Астериск в Республике Беларусь! Это не может быть "особым случаем"!

Re: Как настроить SIP транк Белтелекома 2017 на вх > 5 мин?

Добавлено: 26 июн 2017, 13:15
Vlad1983
возможно остальные случаи как-то договорились с белтелекомом не менять ключи на ходу, либо не применять RTP/SAVP в ультимативной форме
у меня прецедентов стыковки с ним не было и надеюсь не будет

Re: Как настроить SIP транк Белтелекома 2017 на вх > 5 мин?

Добавлено: 26 июн 2017, 19:03
ded
Проблема решена через выставление параметра ignoresdpversion=yes на пирах Белтелеком.

Белтелекомовский свич шлет замены SRTP ключей не меняя версии SDP (с его точки зрения она всегда =0), что есть нарушение стандарта.
Asterisk в этой ситуации просто не менял ключи, что приводило несогласованности SRTP с разных сторон.

Re: Как настроить SIP транк Белтелекома 2017 на вх > 5 мин?

Добавлено: 28 июн 2017, 12:21
alex_k
для будущих поколений сейчас настройки такие 28.06.2017

[375249000000]
PRIME_BBCODE_SPOILER_SHOW PRIME_BBCODE_SPOILER:
type=friend
Qualify=yes
insecure=port,invite
transport=udp
encryption=no
nat=no
host=93.85.255.188
port=5060
outboundproxy=93.85.255.188:5060
fromdomain=ims.beltel.by
keepalive=45
directmedia=no
canreinvite=no
ignoresdpversion=yes
username=+375249000000@ims.beltel.by
secret=********
fromuser=+375249000000
Register String:
PRIME_BBCODE_SPOILER_SHOW PRIME_BBCODE_SPOILER:
+375249000000@ims.beltel.by:************:+375249000000@ims.beltel.by@93.85.255.188/+375249000000
[sip_general_additional.conf]
PRIME_BBCODE_SPOILER_SHOW PRIME_BBCODE_SPOILER:
vmexten=*97
useragent=FPBX-13.0.192.9(13.10.0)
disallow=all
allow=ulaw
allow=alaw
allow=gsm
allow=g726
context=from-sip-external
callerid=Unknown
notifyringing=yes
notifyhold=yes
tos_sip=cs3
tos_audio=ef
tos_video=af41
alwaysauthreject=yes
limitonpeers=yes
directmedia=no
callevents=no
rtpend=20000
tcpenable=no
context=from-sip-external
rtpstart=10000
bindport=5060
jbenable=no
rtpkeepalive=0
rtpholdtimeout=360
rtptimeout=30
srvlookup=yes
videosupport=no
tlsbindaddr=0.0.0.0:5061
tlsclientmethod=tlsv1
tlsdontverifyserver=no
tlsenable=no
registertimeout=20
registerattempts=0
notifyringing=yes
canreinvite=no
checkmwi=10
defaultexpiry=3600
g726nonstandard=no
maxcallbitrate=384
maxexpiry=3600
minexpiry=1200
notifyhold=yes
allowguest=no
nat=force_rport,comedia
ALLOW_SIP_ANON=no
callerid=Unknown
language=en
[sip_general_custom.conf]
PRIME_BBCODE_SPOILER_SHOW PRIME_BBCODE_SPOILER:
session-timers=originate
session-refresher=uac
session-minse=600
session-expires=1200
плюс подправленный chan_sip (что и как не подскажу, нужно искать спеца в этом деле)