Голосовой поток открывается только после танцев с бубном
Сегодня обнаружил одну оччень интересную особенность.
Телефон ведет себя по-разному, в зависимости от кодека, по которому он подключен.
Анамнез такой.
Телефон стоит за NAT-ом. Подключается к * с внешним IP.
Когда я набираю номер, то вижу по появившимся софткеям, что соединение установлено. Но голоса нет.
Трубка лежит на аппарате. Жду звука из спикерфона. Тишина. Снимаю трубку, в ответ слышу, что давно работает чужая IVR.
После этого набираю, держа трубку в руке. Софткеи загорелись. Тишина. Нажимаю Monitor (вывод звука в спикерфон). Голос появляется.
Да, NAT. Да, односторонняя слышимость уже сотню раз тут перетиралась. Но! Похоже, что это не тот случай, и вот почему.
Если я на стороне * меняю кодек телефона с alaw (или ulaw) на g729, то проблема просто исчезает!
И все-же, NAT здесь как-то замешан.
Отлаживая WireShark-ом, я вижу, что в обоих случаях * отправляет пакеты на внутренний IP телефона, хотя, разумеется, пакеты никуда не дойдут.
Но! В случае кодека g729 этих пакетов - 7 штук, после чего они уже идут как положено.
А в случае *law - эти пакеты сыпятся пачками ровно до тех пор, пока я не сниму трубку.
Может, кто-то наблюдал что-то подобное?
|