Я иногда сталкиваюсь с прерыванием голоса при звонке через приложение VOIP. Поскольку все приложения VOIP используют UDP для передачи данных, есть ли в Linux какой-либо инструмент для измерения количества потерянных пакетов и измерения производительности сети.
В чем может быть основная причина потери пакетов UDP и какие меры мне нужно предпринять, если потери пакетов очень велики?
Одна из основных причин потери UDP, особенно в локальных сетях, - это переполнение буфера. Это может произойти в коммутаторе, а также на отправляющем или принимающем серверах. Один из механизмов, который вы можете использовать в Linux для проверки потери пакетов, - это выполнить следующую команду:
watch -n 1 -d 'cat /proc/net/udp'
Это покажет результат, подобный следующему, где последний столбец - количество отброшенных пакетов:
Every 1.0s: cat /proc/net/udp Mon Sep 28 15:01:00 2015
sl local_address rem_address st tx_queue rx_queue tr tm->when retrnsmt uid timeout inode ref pointer drops
11362: 00000000:3443 00000000:0000 07 00000000:00000000 00:00000000 00000000 0 0 18224 2 ffff880808040000 0
19543: 00000000:D438 00000000:0000 07 00000000:00000000 00:00000000 00000000 0 0 3809742 2 ffff8808060c8400 0
30819: 00000000:0044 00000000:0000 07 00000000:00000000 00:00000000 00000000 0 0 12644 2 ffff88100f2b0400 0
Затем вы можете попробовать несколько разных уловок, чтобы попытаться решить эти проблемы (снова используя Linux в качестве примера):
tx_queue
или rx_queue
столбцы растут), а затем увеличьте буферы udp с помощью sudo sysctl -w 'net/ipv4/udp_mem=xxx yyy zzzz'
, или sysctl -w 'net/core/rmem_default=????'
, или sysctl -w 'net/core/wmem_default=????'
(обратите внимание, xxx, yyyy, zzz определены ВотВ бессовестной саморекламе я создал продукт под названием Менеджер потоков Pontus Vision который постоянно настраивает это автоматически.
Что может быть общей причиной потери пакетов UDP
Перегрузка (слишком много пакетов) с отсутствием QOS (случайные пакеты отброшены, VoIP не обрабатывается с приоритетом) и / или неисправное оборудование (качество линии и т. Д.). Для первого получите оборудование с поддержкой QOS, для последнего проверьте линии (оборудование, переключатели, что угодно) за то, что он плохой.
Для подключения к Интернету вам потребуются маршрутизаторы QOS на обоих концах, которых у вас не будет (если ваш провайдер не предлагает VoIP, то у него, вероятно, есть инфраструктура). Тем не менее, поскольку ваш нисходящий канал обычно намного больше, чем восходящий канал, локальный маршрутизатор, отдающий приоритет только нисходящему каналу, обычно «достаточно хорош».
Однако плохое качество линии - это сложная проблема.
Если вы страдаете от потери пакетов UDP, вы почти наверняка страдаете также от потери пакетов TCP. Разница в том, что TCP будет повторно передавать потерянные пакеты, а UDP - нет. Приложения VoIP не могут повторно передавать, потому что, если бы они это сделали, информация больше не была бы полезной.
Я предполагаю, что ваши звонки VoIP проходят через Интернет. QoS может быть необходимо, но это не принесет никакой пользы, если ваше интернет-соединение не работает должным образом. Использовать это тест потери пакетов чтобы проверить это. Он сообщит вам, что происходит потеря пакетов, то есть у провайдера или на вашем локальном сайте.
Если он обнаружит проблемы на вашем местном объекте, то пора проверить ваш кабельный или DSL-модем на предмет хорошего отношения сигнал-шум, выходной мощности и затухания (DSL).