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

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

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.