Прошу не сильно кидаться тапками, я обращаюсь к спецам только если уже очень долго сам просушил мозги над проблемой и покурил много мануалов и перешерстил много ссылок в инете. В данном случае я выяснил причины возникновения симптомов, но не могу найти истинную причину проблемы.
Стоит Астериск 13 на CentOS7 (но аналогично работает и в 11 на CentOS6.4 и на Ast13/Ubuntu14.04).
Суть проблемы: при включении в sip.conf регистрации на транки провайдеров более 2-х возникают чудовищные тормоза в работе Астериска. Проявляются после core reload в полном игноре со стороны астериска реакции на приходящие запросы устройств на регистрацию. Соответственно все внутренние абоненты с состоянии UNKNOWN, в логе сообщения:
NOTICE[2808] chan_sip.c: Peer '115' is now UNREACHABLE! Last qualify: 10 по всем внутренним абонентам.
С какой-то хаотичной периодичностью сервак все же регистрирует заново абонентов и ненадолго они становятся REACHABLE.
По поводу самих регистраций пиров к провайдеру в логе полно сообщений такого характера:
PRIME_BBCODE_SPOILER_SHOW PRIME_BBCODE_SPOILER:
Retransmission timeout reached on transmission 01a1fff33a853b9d3d0c71bf271695f8@[::1] for seqno 469 (Critical Request) -- See https://wiki.asterisk.org/wiki/display/ ... nsmissions
Packet timed out after 60614ms with no response
[Aug 7 11:45:14] WARNING[2808] chan_sip.c: Retransmission timeout reached on transmission 13a5286f2505da0c203f1cf95c47b505@[::1] for seqno 466 (Critical Request) -- See https://wiki.asterisk.org/wiki/display/ ... nsmissions
Packet timed out after 45460ms with no response
[Aug 7 11:45:30] NOTICE[2808] chan_sip.c: -- Registration for '380487283715202@vg5.vegatele.com' timed out, trying again (Attempt #330)
[Aug 7 11:45:45] NOTICE[2808] chan_sip.c: -- Registration for '380487283715204@vg5.vegatele.com' timed out, trying again (Attempt #331)
[Aug 7 11:45:45] WARNING[2808] chan_sip.c: Retransmission timeout reached on transmission 2a1dc0c3227f3fa55ecae5b06fd5627d@[::1] for seqno 466 (Critical Request) -- See https://wiki.asterisk.org/wiki/display/ ... nsmissions
Packet timed out after 60617ms with no response
[Aug 7 11:45:45] WARNING[2808] chan_sip.c: Cancelling retransmit of OPTIONs (call id 71b9a37d031341d80f5c420f3f144c78@192.168.4.10:5060) -- See https://wiki.asterisk.org/wiki/display/ ... nsmissions
[Aug 7 11:45:45] WARNING[2808] chan_sip.c: Cancelling retransmit of OPTIONs (call id 0ee36fc52fdb13a13010d3291d6c011c@192.168.4.10:5060) -- See https://wiki.asterisk.org/wiki/display/ ... nsmissions
Packet timed out after 60614ms with no response
[Aug 7 11:45:14] WARNING[2808] chan_sip.c: Retransmission timeout reached on transmission 13a5286f2505da0c203f1cf95c47b505@[::1] for seqno 466 (Critical Request) -- See https://wiki.asterisk.org/wiki/display/ ... nsmissions
Packet timed out after 45460ms with no response
[Aug 7 11:45:30] NOTICE[2808] chan_sip.c: -- Registration for '380487283715202@vg5.vegatele.com' timed out, trying again (Attempt #330)
[Aug 7 11:45:45] NOTICE[2808] chan_sip.c: -- Registration for '380487283715204@vg5.vegatele.com' timed out, trying again (Attempt #331)
[Aug 7 11:45:45] WARNING[2808] chan_sip.c: Retransmission timeout reached on transmission 2a1dc0c3227f3fa55ecae5b06fd5627d@[::1] for seqno 466 (Critical Request) -- See https://wiki.asterisk.org/wiki/display/ ... nsmissions
Packet timed out after 60617ms with no response
[Aug 7 11:45:45] WARNING[2808] chan_sip.c: Cancelling retransmit of OPTIONs (call id 71b9a37d031341d80f5c420f3f144c78@192.168.4.10:5060) -- See https://wiki.asterisk.org/wiki/display/ ... nsmissions
[Aug 7 11:45:45] WARNING[2808] chan_sip.c: Cancelling retransmit of OPTIONs (call id 0ee36fc52fdb13a13010d3291d6c011c@192.168.4.10:5060) -- See https://wiki.asterisk.org/wiki/display/ ... nsmissions
Всего у меня есть 1 транк одного провайдера (а нужен еще один его номер) и 4 транка другого(основной номер и серийки).
Если включить хотя бы 4-ре, то связь ложится полностью. tcpdump показывает, что пакеты REGISTER интенсивно приходят от клиентских девайсов и не получают ответов. В то же время от астериска уходят пакеты регистрации к провайдерам и приходят подтверждения. Я отсеял вопросы фаерволов, проблемы сети - все уперлось именно в астериск и его настройки.
Можно было бы предположить, что я неверно настроил транки к провайдеру (хотя возможно так и есть), но проблема возникает при любом варианте разрешенных регистраций , если их количество больше 2-х. Если оставить одну регистрацию любого провайдера, то проблем нет вообще, связь работает идеально, входящие-исходящие соединения через транк проходят. Если включить два любых транка, то проблема проявляется лишь после релоада астериска на короткий промежуток и потом все работает. Возможно при обновлении регистрации периодически также возникают указанные лаги.
Привожу часть sip.conf:
PRIME_BBCODE_SPOILER_SHOW PRIME_BBCODE_SPOILER:
[general]
context=default
port=5060
bindaddr=0.0.0.0
allowguest=no
srvlookup=no
alwaysauthreject = yes
;sendrpid=yes
;register => 9x6:xxx@sip.tenet.ua/601
register=380487283715201:xxx:ex201@vg5.vegatele.com/101
register=380487283715202:xxx:ex202@vg5.vegatele.com/101
;register=380487283715203:xxx:ex203@vg5.vegatele.com/101
;register=38048x204:xxx:ex204@vg5.vegatele.com/101
[tenet]
type=friend
host=sip.tenet.ua
name=9x6
username=9x6
;callerid=7373463
secret=xxx
insecure=port,invite
disallow=all
allow=ulaw
fromuser=9x6
fromdomain=sip.tenet.ua
canreinvite=no
qualify=yes
;nat=yes
context=incoming
[vega-trunks](!) ;шаблон локальных номеров
type=peer
port=5060
host=vg5.vegatele.com
nat=force_rport,comedia ;nat=no не меняет дела, хотя подозреваю, что тут собака порылась, так как сервак у меня все же за NAT.
fromdomain=vg5.vegatele.com ;для Одессы
insecure=invite
canreinvite=yes
dtmfmode=rfc2833
context=incoming
qualify=yes
outboundproxy=vg5.vegatele.com ;для Одессы
nat=no
disallow=all
allow=alaw
allow=ulaw
language=ru
[x201](vega-trunks)
username=ex201
name=38048x201
fromuser=38048x201
secret=xxx
[x202](vega-trunks)
username=ex202
name=38048x202
fromuser=38048x202
secret=xxx
context=default
port=5060
bindaddr=0.0.0.0
allowguest=no
srvlookup=no
alwaysauthreject = yes
;sendrpid=yes
;register => 9x6:xxx@sip.tenet.ua/601
register=380487283715201:xxx:ex201@vg5.vegatele.com/101
register=380487283715202:xxx:ex202@vg5.vegatele.com/101
;register=380487283715203:xxx:ex203@vg5.vegatele.com/101
;register=38048x204:xxx:ex204@vg5.vegatele.com/101
[tenet]
type=friend
host=sip.tenet.ua
name=9x6
username=9x6
;callerid=7373463
secret=xxx
insecure=port,invite
disallow=all
allow=ulaw
fromuser=9x6
fromdomain=sip.tenet.ua
canreinvite=no
qualify=yes
;nat=yes
context=incoming
[vega-trunks](!) ;шаблон локальных номеров
type=peer
port=5060
host=vg5.vegatele.com
nat=force_rport,comedia ;nat=no не меняет дела, хотя подозреваю, что тут собака порылась, так как сервак у меня все же за NAT.
fromdomain=vg5.vegatele.com ;для Одессы
insecure=invite
canreinvite=yes
dtmfmode=rfc2833
context=incoming
qualify=yes
outboundproxy=vg5.vegatele.com ;для Одессы
nat=no
disallow=all
allow=alaw
allow=ulaw
language=ru
[x201](vega-trunks)
username=ex201
name=38048x201
fromuser=38048x201
secret=xxx
[x202](vega-trunks)
username=ex202
name=38048x202
fromuser=38048x202
secret=xxx
P.S. Много текста получилось, конечно, но проще не получается описать проблему. Пишу на форумах мало - извините, если что не так.