Поиск tpacket_rcv
: он находится в af_packet.c
. AF_PACKET
означает tcpdump.
Похоже, кто-то еще видел проблему, вызванную tcpdump, без разрешения: https://groups.google.com/forum/#!msg/mechanical-sympathy/qLqYTouygTE/rq9XSBxgqiMJ
Но я ' м подозрительно относится к падению tpacket_rcv. Вероятно, это означает выход из функции по метке ring_is_full
. Похоже, пакеты не дойдут до tcpdump, потому что его буфер переполнен. Однако я не думаю, что это означает, что пакет (обязательно) полностью отбрасывается; он все еще может подключиться к UDP-сокету. Это предполагает, что ваша стенограмма dropwatch не охватывала ни одно из падений UDP, показанных на счетчиках. Я не думаю, что AF_PACKET считается отбрасыванием UDP только потому, что они оба сокета дейтаграммы. К сожалению, похоже, что эти tp_drops
не отображаются в netstat
.
Я бы хотел запустить dropwatch и отфильтровать строки tpacket_rcv с помощью grep -v
. Достаточно времени, чтобы увидеть увеличение счетчика ошибок приема UDP.
Я думаю, что rmem_max
для UDP поможет только в том случае, если приложение попытается увеличить количество буферов приема. Нет реальных результатов поиска по запросу "opensips rmem". Я бы попробовал вместо этого поднять rmem_default
. Но я действительно надеюсь, что они были бы показаны как «ошибки буфера приема», если бы это была проблема ...
И все же они не являются ошибками контрольной суммы UDP ...
Есть еще одна настраиваемая функция, называемая netdev_max_backlog
.Очевидно, соответствующий счетчик переполнения - это второй столбец / proc / net / softnet_stat
(там одна строка на ЦП). Но это происходит до того, как пакет отправляется в стек UDP, поэтому это не должно влиять на статистику UDP ...
Дракончик, это все, о чем я могу думать сейчас, это немного загадочно :(.
РЕДАКТИРОВАТЬ :
В параметре размера буфера, связанного с прокси-сервером SIP, размер буфера был небольшим для обработки высокой скорости пакетов в секунду. После настройки мы видим хороший результат. Падения есть, но очень-очень низкие числа. - Satish