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

RTP

Добавлено: 21 сен 2011, 10:58
serega_19
ситуация в следующем, устройства договорились по rtp по опреленным портам, начали разговор, потом абонент В начал слать rtp с другого порта, абонент А начал работать с новым портом. вопрос в следующем это правильная работа sip протокола? или абонент А должен строго посылать трафик на порт, который прислал абонент В в ответе на invite?

Re: RTP

Добавлено: 21 сен 2011, 11:18
knoppix
Это нормально , для этого ты и должен открывать диапозон портов в раутере на свой сервер , RTP может менять порты , SIP - 5060 не меняется , только в ручную

Re: RTP

Добавлено: 21 сен 2011, 11:46
serega_19
спасибо, но это не ответ

Re: RTP

Добавлено: 21 сен 2011, 11:59
ded
serega_19 писал(а):вопрос в следующем это правильная работа sip протокола?
Нет.
serega_19 писал(а):или абонент А должен строго посылать трафик на порт, который прислал абонент В в ответе на invite?
Да.

Re: RTP

Добавлено: 21 сен 2011, 15:46
Sfinx
serega_19 писал(а):ситуация в следующем, устройства договорились по rtp по опреленным портам, начали разговор, потом абонент В начал слать rtp с другого порта, абонент А начал работать с новым портом. вопрос в следующем это правильная работа sip протокола? или абонент А должен строго посылать трафик на порт, который прислал абонент В в ответе на invite?
При NAT'е - это нормальное поведение.

Re: RTP

Добавлено: 21 сен 2011, 16:50
ys1797
При NAT'е - это нормальное поведение.
Это какими ногами нужна настроить NAT, чтоб это было нормальным поведением...

Вообще на вопрос уже ответили.
Для приема UDP обычно используется recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlen);
Asterisk не исключение и он ПРОВЕРЯЕТ адрес источника.

И должно появиться такое сообщение:
ast_debug(1, "Received RTP packet from %s:%d, dropping due to strict RTP protection. Expected it to be from %s:%d\n", ast_inet_ntoa(sock_in.sin_addr), ntohs(sock_in.sin_port), ast_inet_ntoa(rtp->strict_rtp_address.sin_addr), ntohs(rtp->strict_rtp_address.sin_port));

Re: RTP

Добавлено: 21 сен 2011, 17:13
ded
ys, ты бы уж просто бинарным дампом отвечал. Типа - Для приема UDP обычно используется

Код: Выделить всё

H���oh�\�      t�
�
�*4\����D,Pt�]��{�����H� >=Y� @�s�������,C]x�����▒-@Ym�������p�����"2BRbr�����"�������/@^y���� h�9J��\r��� ����<Rf}�����0H_▒������*�D_s������)B[v�����X
                                                             !3H[o������]
                                                                        4P`�m�����#=Sl���������"�9N`r�������!4F_x�����3Mf�����!9Pj{�����7Oe}�����0&�C[p�PCO
И должно появиться такое сообщение:

Код: Выделить всё

(���oHp��                                               t�
b
 L8<����o����o���o\���"2BRbr�����"2BRbr�����"2BRbr�����"2BRbr�����T!H/
"Oa4t8�0<�H�L�)P�|���'�=�Q�b�y��1                                    `o����������Q�����
�d������2                       ���▒&@ <@`Q2
        32      %0$468I<a@D�H�L�P�T�▒X��p�+�B�X�o@����(�0(@5h��=�1EXfv�X�X����X���X���X���.

Re: RTP

Добавлено: 21 сен 2011, 18:00
Sfinx
ys1797 писал(а):
При NAT'е - это нормальное поведение.
Это какими ногами нужна настроить NAT, чтоб это было нормальным поведением...
С каких это пор NAT поддерживает RTP ? Его как хочешь настраивай, а порты у машины внутри NAT и роутера снаружи будут разные. Именно для этого и используются стратегии изменения/резервирования портов во время сессии - собственно все описано в соответствующих RFC. Другое дело что RTP port discovery это только одна из трех проблем SIP/SDP которые приходится решать при NAT во время сессии.

Re: RTP

Добавлено: 21 сен 2011, 18:38
tma
А уж какие проблемы вылезают у RTP+NAT при активном использовании торрентов...

Re: RTP

Добавлено: 21 сен 2011, 21:35
zzuz
tma писал(а):А уж какие проблемы вылезают у RTP+NAT при активном использовании торрентов...
Честно ? Абсолютно никаких.