Jump to content
Калькуляторы

Соединение двух Asterisk: 16.0.1 PJSIP с 13.23.1 SIP

Добрый день!

 

Есть задача соединить между собой два сервера Asterisk, тема избитая и обсосанная со всех сторон. Но возникла одна проблема, передача CID источника звонка.

 

Имеем Asterisk 16.0.1(srv1) +PJSIP + телефон GRANDSTREAM с одной стороны, и Asterisk 13.23.1(srv2) + CHAN_SIP + телефон DLINK. Решил делать соединение на SIP.

Srv2 выступает в качестве сервера, srv1 в качестве клиента. Соединение поднялось, звонки проходят, при звонке с dlink на grandstream (srv2->srv1), CID отображается, но при звонке с grandtream на dlink (srv1->srv2), отображается что звонит srv01. Это логично и понятно, и решил подправить это просто передачей параметра P-Asserted Identity, и подменой на srv02 в заголовке sip сообщения CID. Вроде решилась проблема, но не нет. Grandstream, при вставке русских букв, просто отказывается звонить, глюк железки.

 

Не долго думая, решил, а что мешает мне поднять два SIP соединения, как делают все остальные. Прописал все в pjsip.conf(srv1) и sip.conf(srv2). Соединение srv1(client)->srv2(server), поднялось. А вот при попытке соединения srv2(client)->srv1(server), мы получаем отлуп PJSIP'ом, мол AOR не найден для ENDPOINT. Но при этом ENDPOINT в ошибке пишется не тот, который должен использоваться для принятия соединения от srv2, а тот, который используется для инициализации соединения srv1->srv2. Приплыли, PJSIP похоже видит, что с данным хостом уже используется точка подключения, и начинает её использовать, с вытекающими от сюда всеми ошибками. 

 

Пробовал использовать другой порт для принятия подключения с srv2, но все равно ошибка, видимо нужно инициализировать подключения srv2 с другого порта, что не вариант. Есть ещё один вариант, включить параллельно PJSIP обычный SIP на другом порту, и с помощью него принимать подключение, но это какой то изврат.

 

Может есть какая то bestpractic, подскажите пожалуйста?

 

P.S. использование в диалплане логин:пароль не приемлю.

Edited by Axen

Share this post


Link to post
Share on other sites

Для PJSIP можно завести 2 разных транспорта и ним развесить эндпоинты. Должно помочь.

Share this post


Link to post
Share on other sites
2 часа назад, TheUser сказал:

Для PJSIP можно завести 2 разных транспорта и ним развесить эндпоинты. Должно помочь.

Пробовал, не помогает. Похоже что надо инициировать соединение с разных портов, но со стороны srv2, sip пока :(

Share this post


Link to post
Share on other sites
16 минут назад, Axen сказал:

Пробовал, не помогает. Похоже что надо инициировать соединение с разных портов, но со стороны srv2, sip пока :(

А, стоп. Разнесите транспорты по разным портам. Скорей дело не в PJSIP, а в SIP, который может сбоить при работе двух пиров с одной пары IP/PORT. Разнесение транспортов решит проблему, если дело в этом.

 

Share this post


Link to post
Share on other sites
50 минут назад, TheUser сказал:

А, стоп. Разнесите транспорты по разным портам. Скорей дело не в PJSIP, а в SIP, который может сбоить при работе двух пиров с одной пары IP/PORT. Разнесение транспортов решит проблему, если дело в этом.

 

Я создавал два транспорта, с разными портами, не помогало)

Проблема в PJSIP, он не понимает видимо, когда он устанавливает соединение на IP/PORT, а с этой же пары потом пытаются установить соединение с ним.

Share this post


Link to post
Share on other sites
47 минут назад, Axen сказал:

Я создавал два транспорта, с разными портами, не помогало)

Ваша правда. Запутался сам и ввел Вас в заблуждение.

 

Это у нас такой кейс был, хотели даже модифицировать Asterisk для обхода проблемы.

Согласно этой схеме Endpoint привязан к Transport, но по сути Asterisk при поиске Endpoint для сопоставление пакета с ним Transport не учитывает.

res_sip_configrelationships.png?version=

 

 

Share this post


Link to post
Share on other sites
58 минут назад, TheUser сказал:

Endpoint привязан к Transport, но по сути Asterisk при поиске Endpoint для сопоставление пакета с ним Transport не учитывает.

И это "боль" :(

Сейчас сделал схему что srv1 связывается с srv2 по PJSIP, а принимает соединение от srv2 на SIP на другой порт отличный от PJSIP.  В итоге когда звонок с srv2 у нас SIP->PJSIP, а когда звонок с srv1, то SIP-SIP. Но и тут сейчас возникла проблема, пытаюсь решить.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now