Для обхода проблемы таймаутов, если есть желание использовать
транспорт UDP, используйте протокол уровня приложения SIP с
включённой функцией Silence Suppression. Эта фишка позволяет
передавать пакеты с данными (media) в сессии SIP не всегда, а
только тогда, когда есть данные (разговор). Таким образом, будете
иметь действительную сессию, распознаваемую NAT'ом и не используя
протокол TCP. Правда, чтобы в этом случае сама сессия SIP не
разорвалась по таймауту, узлам придётся периодически обмениваться пакетами UDP с сообщениями протокола SIP типа "SIP OPTIONS" и "SIP OK". Учитывая, что SIP очень распространён, поддержка UDP в таком виде на NAT может присутствовать.
В общем, "звоните" от узла за NAT'ом на узел в Интернет по SIP, согласуете в сессии SIP Silence Suppression и дальше передаёте по UDP на назначенные порты пакеты с данными друг другу, не забывая про периодические запросы SIP, чтобы NAT не забыл про ваш "звонок". Таким образом можно хорошо передавать, в том числе, и особенно, данные реального времени.