Re: far-end NAT traversal

От: Vladimir A. Butenko <CGatePro_at_mx_ru>
Дата: Wed 22 Feb 2006 - 01:53:58 MSK

On Wed, 22 Feb 2006 00:01:38 +0600
  "Victor Sudakov" <CGatePro@mx.ru> wrote:
> Vladimir A. Butenko wrote:

>> >>>
>> >>>Не затруднит разъяснить пару вопросов по far-end NAT traversal.
>> >>>
>> >>>В документации написано: 'If a SIP client sends a request to
>> >>>CommuniGate Pro and the client own network address specified in the
>> >>>request headers is included into the NATed IP Addresses list, while
>> >>>the Server has received this request from a different network address,
>> >>>NOT listed included into the NATed IP Addresses list, the Server
>> >>>decides that this client is behind a NAT.'
>> >>>
>> >>>Этот момент касается действительно только request headers или также и
>> >>>адресов, передаваемых внутри SDP ?
>> >>
>> >>Только headers. Точнее - по верхнему Via.
>> >
>> >А в каких конкретно местах SIP-сообщений CGP подменяет приватные
>> >адреса на глобальные?
>> 
>> А он их не должен менять. Это всякие "умные гейтвеи" их меняют 
>> (неправильно). Менять надо только SDP.

>
> Разве Contact менять не следует?

Нет. Это очень плохая практика (хотя некоторые её пытаются применять). Делается это добавлением Record-Route, а не изменением Contact. CGatePro может менять Contact - для gateways, которые не понимают Record-Route (см. Workaround) - но это только для очень тупых gateways.

>> >И на основании чего мой UA принимает решение о том, куда отправлять
>> >поток media, чтобы он попал на другой UA, который находится за far-end 
>> >NAT?
>> 
>> На основании того SDP, который ему подсунет CGatePro. А в нем будет порт 
>> самого CGatePro - туда оно и будет слать media. А оттуда - релеиться 
>> куда-то. В том числе - на другой UA из-за far-end NAT.

>
> А какие именно параметры CGatePro подменяет в SDP ?

Никаких. Только порты и адреса. Ну, чуть-чуть перетасовать может, но менять - не должен. Он же тупой (Media Proxy), он пакетики шлёт, и смысл параметров может и не понять.

>> С Вашего клиента (с его порта 5060, но может быть -и с любого другого) 
>> приходят пакеты - на CGatePro. Если "внешний" адрес и порт:
>> а) не будет меняться
>> б) не будет заростать (то есть можно будет в тот же адрес-порт сувать 
>> пакеты, и они будут доходить до Вашего UA) -

>
> Погодите. Вот UA послал REGISTER с порта 3456 на 5060 порт на CGP.
> В таблице NAT создалась соответствующая запись об этих портах.
> Теперь, чтобы ответ дошёл от CGP до UA за натом, его придётся послать
> с порта 5060 на порт 3456! А послан он скорее всего будет на порт
> 5060, а не на какой-то 3456.

Он был послан с порта 4444 на UA, который будет прописан в Contact и в Via. А CGatepro - увидит пакет пришедшим с порта 3456 и с другого адреса. Если он это опознает как far-end NAT - то будет слать на 3456 и на этот другой (external) адрес. И в регистрацию об этом запишет. Можете глянуть в account.info после такой регистрации - там будет и Contact, и реальный Path до него.

>> >В том месте, которое я цитировал, или где-то ещё?
>> 
>> Да, на странице RealTime -> SIP.

>
> Там не очень много и без технических деталей.

А этих деталей - очень много. И они могут меняться. Это уже - внутреннее дело CgatePro, как он со всем этим разбирается. Если Вы поставите кластер, то там вообще бумаги не хватит всё это описывать. И - we reserve the right to change it at any moment. Это то, что "under the hood".

Опять же, как понимаете, выдавать на блюдечке всяким Цискам подробное описание того, как что надо делать - как бы не совсем в наших интересах. На этой неделе попробовали чуть-чуть описать Нортелю. Судя по всему, они поняли. И больше пытаться самим делать SIP Load Balancer не будут :0)

> Victor Sudakov, VAS4-RIPE, VAS47-RIPN
> sip:sudakov@sibptus.tomsk.ru

Sincerely,
Vladimir Получено Tue Feb 21 22:53:32 2006

Этот архив был сгенерирован hypermail 2.1.8 : Fri 24 Apr 2015 - 16:14:44 MSK