Практический обход NAT для надежных сетевых подключений

Я видел и читал много похожих вопросов, и соответствующие статьи Википедии (NAT обход, STUN, ОЧЕРЕДЬ, TCP дырокол), но огромное количество информации не помогает мне решить мою очень простую проблему:

Я пишу P2P-приложение и хочу, чтобы два пользователя моего приложения за NAT могли соединяться друг с другом. Соединение должно быть надежным (сопоставимым с надежностью TCP), поэтому я не могу просто переключиться на UDP. Решение должно работать на современных распространенных системах без перенастройки. Если это помогает, решение может включать подключаемое стороннее устройство, если ему не нужно передавать все данные через прокси (например, для получения внешних (WAN) IP-адресов одноранговых узлов).

Насколько я знаю, мой единственный вариант - использовать библиотеку «надежного UDP» +UDP дырокол, Для этого есть библиотека (C / C ++)? я нашелENET всвязанный вопрос, но он заботится только о первой половине решения.

Что-нибудь еще? Вещи, на которые я смотрел:

Тередо туннелирование - требуется поддержка операционной системы и / или пользовательской конфигурацииUPnP переадресация портов - UPnP не присутствует / не включен вездеTCP дырокол кажется экспериментальным и работает только при определенных обстоятельствахSCTP даже менее поддерживается, чем IPv6. SCTP через UDP - это просто надежный UDP (см. Выше)RUDP - почти нет основной поддержкиИз того, что я мог понять о STUN, STUNT, TURN и ICE, никто из них не помог бы мне здесь.

Ответы на вопрос(2)

Ваш ответ на вопрос