Пробивка отверстий UDP: один симметричный и другой несимметричный NAT

Я пытаюсь реализовать P2P с пробивкой отверстий. Вот поток:

  1. Оба узла (P1, P2) отправят 1 пакет на сервер (S).
  2. Сервер(ы) отвечает обоим, сообщая другим IP:PORT
  3. P1 и P2 получают этот UDP-пакет, зная внешний/общедоступный IP-адрес другого: порт.
  4. P1, P2 начинают отправлять пакеты другим узлам с общедоступным IP:PORT.
  5. Как только одноранговые узлы получают пакет другого однорангового узла, я предполагаю, что дыра пробита и передаст этот сокет моему приложению.

Проверял на разных роутерах, вот результат:

  • Когда P1 и P2 оба находятся в несимметричном NAT (полный/ограниченный конус), я не сталкиваюсь с какими-либо проблемами.
  • Когда P1=несимметричный и P2=симметричный:
  • -----маршрутизатор-1 (симметричный-NAT) + маршрутизатор-2 (несимметричный) = успех
  • ---- маршрутизатор-3 (симметричный NAT) + маршрутизатор-2 (несимметричный) = *Ошибка*

До 4-го шага все в порядке. Но на 5-м шаге ни один узел не получает пакет другого узла. Я ожидал, что, по крайней мере, *'узел за несимметричным NAT' получит пакет другого.*

Кто-нибудь знает, что происходит?


person user739711    schedule 19.07.2012    source источник
comment
Я знаю, что это старый вопрос, но если один одноранговый узел является полным конусом, а другой симметричным, я считаю, что не будет никаких проблем, потому что полный конус напрямую получает первое сообщение и отвечает на конечную точку, которую он получил. и тогда туннель будет создан.   -  person Navin    schedule 21.03.2013


Ответы (1)


здесь

В основном они используют два сервера S1 и S2.

Глядя на исходящие порты, они часто могут предсказать, какой исходящий порт будет использоваться, когда P1 отправляет пакет P2 и наоборот.

По-видимому, многие маршрутизаторы просто используют увеличение/уменьшение или какой-либо пропуск размера.

Нет гарантии предсказания правильного порта. В конечном итоге они отправляют кучу пакетов на разные порты в надежде, что один из них пройдет.

У меня другая идея, как к этому подойти, мне нужно найти симметричный NAT, чтобы проверить это :)

person John La Rooy    schedule 08.11.2013