RFC 3311 (метод Update ) проблемы несовместимости.
Кратко. Метод Update возможность смены типа медии в одной SIP сессии без разрыва. Аналог, так называемый reinvite. То есть, создание второй сессии (через INVITE) c новыми параметрами медиа протокола.
1. Если есть возможность отключить данный метод в UAC лучше это сделать. Сэкономится куча времени на решении проблем. Reinvite работает не хуже.
2. Семейство клонов SER, Openser, Kamailio, openSIPS не имеют ни одного примера правильной обработки сообщения UPDATE из за NAT.
Решение тривиальное:
if (is_method(«BYE|CANCEL»)) {
unforce_rtp_proxy();
} else if (is_method(«INVITE|UPDATE«)){
force_rtp_proxy();
}
3. Еще одна пренеприятнейшая особенность всей линейки устройств от Grandstream. При входящем звонке, при совпадении нескольких кодеков они выдают в SDP список кодеков вместо одного. Соответственно, если вызывающая сторона поддерживает RFC3311 она делает UPDATE. Принудительно выключит эту багофичу можно только в последних версиях:
Use First Matching Vocoder in 200 OK SDP должно быть YES
Ноябрь 22nd, 2011 | 01:20
Ситуация такая.
Nokia E52 никак не могу настроить встроенный клиент на работу с SIP от Spikko.com, хоть с процедурой знаком основательно.
Звонок проходит, номер определяется, но при нажатии кнопки «поднять трубку» зависает и ничего не слышно.
Звонящему не слышно, что я поднял трубку, то есть он слышит длинные гудки. Телефон висит все время входящего звонка. При нажатии клавиши «отбой» — выходит из зависшего состояния.
Исходящие же звонки проходят нормально.
На тестируемом втором телефоне Nokia E51 все работает как часы. Никаких проблем нет.
Особенности.
Указанный SIP провайдер использует нестандартный порт 5090, на это и грешил бы, но исходящие звонки то ведь работают.
Набор кодеков так же одинаковый на обоих телефонах, да и опять же, исходящие работают, поэтому на это тоже, наверное, грешить не стоит.
Ситуация одинаковая как при коннекте через WLAN (разные) так и через 3G от Utel: Е51 работает, Е52-нет.
Да, и еще одно. SIP номер от другого оператора (порт 5060) работает без проблем. Но мне то нужен именно этот:=)
Все форумы перелопатил, ничего не нашел и не представляю где проблему искать. Очевидно есть конфликте на уровне прошивки в портах, причем только при входящем сигнале.
Телефон перепрошивал несколько раз — результат тот же.
Если можете, помогите решить задачу. Спасибо большое заранее.
Ноябрь 22nd, 2011 | 14:47
Я даже инструкцию под какую-то нокию писал. И работала даже.Давно правда. А что форумы лопатить. Dump на транзите нужен, иначе это гадание на кофейной гуще. Попробуйте еще, выключить на нокии все настройки nat traversal в первую очередь STUN и все что с ним связанно. Больше на уровне имеющейся инфы идей нет.
Маленькое замечание по поводу набора кодеков.
Общепринятое правило, выбирается старший совместимый вызывающей стороны. Так что теоретически могут бьть нюансы.
Декабрь 1st, 2011 | 23:05
Проблема вроде конкретизируется потихоньку.
Судя по всему, сервер провайдера почему-то не понимает управляющих команд Nokia E52.Попробуем снять дамп с обоих аппаратов и сравнить. Обязательно отпишусь, если кому интересно.
Декабрь 2nd, 2011 | 12:22
Вообще не очень. Если бу вы уменя такое Incapability нашли, было бы очень интересно. Вообще по сей день не понимаю, как можно не пофиксить проблему, если клиент готов сотрудничать. Ну разве что при наличии пропетарного софта от производителя с отбитой головой.
Декабрь 2nd, 2011 | 18:34
Вы оказались правы-не очень прояснилось=)
Провели тест с двух аппаратов: Е51 и Е52.
Тест заключался в выполнении исходящего и входящего звонков с обоих аппаратов поочередно на номер Тенет.
Дампы абсолютно одинаковые, разве что хеш разный.
То есть управляющие сигналы посылают оба аппарата одинаковые.
Разница между настройками профилей Тенет и Spikko (входящие звонки из которого не получается принять) заключается в том, что Spikko использует кодеки ILBC и G729, и порт 5090.
Может у кого-то есть идея куда копать?