8

У меня есть приложение для потокового видео, которое отлично работает в моем офисе, но с треском проваливается на месте клиента. Симптом заключается в том, что каждые пару секунд я прекращаю прием пакетов UDP на 2 секунды, затем поток возобновляется, как будто ничего не происходит.

Я запустил http://www.pingtest.net/ на месте клиента, и он вернулся отлично. Нет отброшенных пакетов и низкая задержка. Единственное различие, которое я заметил между нашими двумя местоположениями, состоит в том, что время ожидания ping google.ca в их местоположении, но работает в моем.

Как проверить, блокирует ли сеть, в которой я нахожусь, входящие пакеты UDP? Есть ли способ для меня, чтобы изолировать, кто отбрасывает пакеты?

3 ответа3

12

на стороне сервера установите сервер UPD с

iperf -s -u

на стороне клиента проверьте соединение UDP с

iperf -u -c <IP Address of Server>
4

Вы можете попытаться установить соединение UDP с netcat .

На машине A вне сети потребителя запустите:

nc -u -l -p 1234            # if using netcat-traditional
nc -u -l 1234               # if using netcat-openbsd (as pointed out by @JamesHaigh)

Обратите внимание на -u который инструктирует netcat использовать UDP. (Также имейте в виду, что существуют разные версии netcat , которым нужен параметр -p или нет; приведены варианты для двух наиболее распространенных (?) те, которые включены в Debian.)

По месту нахождения потребителя: nc -u [addr of machine A] 1234 .

Попробуйте отправить текст, или, что еще лучше, используйте каналы, чтобы отправить файл между обоими местоположениями, а затем выполните различие.

0

Команды netcat в ответе mpy полезны для диагностических целей, но я дополняю этот ответ другим подходом к вашей основной проблеме.

Возможно, стоит приложить ваше приложение к SCTP или даже к TCP. Я действительно нашел этот вопрос, потому что я искал, как отклонить входящие пакеты UDP от пользователей, использующих больше, чем их доля нисходящей линии связи, когда он перегружен, потому что в отличие от SCTP и TCP, UDP не имеет управления перегрузкой, что очень затрудняет определение приоритетов нисходящей линии связи. движение.

И SCTP, и TCP имеют контроль над перегрузкой и прекрасно работают с QoS, но SCTP имеет дополнительное преимущество по сравнению с TCP, которое было разработано для потоковых приложений в реальном времени, что делает его хорошей заменой как для TCP, так и для UDP. По сути, SCTP является лучшим из двух наиболее распространенных транспортных протоколов.

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .