UDP трафик через LTE - PullRequest
       12

UDP трафик через LTE

0 голосов
/ 13 октября 2018

Я разработал приложение C ++ для потоковой передачи видео с веб-камеры на устройстве Odroid через UDP.Клиент представляет собой приложение для iPhone, использующее простые UDP-сокеты, и оно отлично работает по Wi-Fi, но не по LTE.Вызов sendto () работает нормально, но recvfrom () блокируется навсегда.Сначала я подумал, что это связано с тем, что iPhone блокирует UDP-трафик, но я также попробовал клиент на своем ноутбуке, подключенный к точке доступа iPhone и, следовательно, через LTE.Как вы думаете, что-то с телефонными провайдерами, блокирующими UDP-трафик?Я предпочел UDP вместо TCP для более быстрой потоковой передачи.Любой совет будет высоко оценен!Спасибо!

ОБНОВЛЕНИЕ: Я нашел причину проблемы после некоторого дальнейшего осмотра.Оказывается, что UDP через LTE устанавливает флаг IP_MTU_DISCOVER и, если пакет пользователя больше, чем MTU устройства, он не выполняет фрагментацию IP, а просто отбрасывает пакет.Мое приложение отправляет пакеты, размер которых превышает MTU, но в случае Wi-Fi они фрагментируются на уровне IP.Если вы отключите флаг IP_MTU_DISCOVER, большой пакет будет фрагментирован и успешно доставлен в пункт назначения.Другой альтернативой будет отправка пакетов, меньших, чем MTU, из приложения.Оба подхода не очень хороши, но, по крайней мере, загадка раскрыта.

...