как найти, какие пакеты были отброшены
Я получаю тысячи отброшенных пакетов с сетевой карты Broadcom:
eth1 Link encap:Ethernet HWaddr 01:27:B0:14:DA:FE
UP BROADCAST RUNNING SLAVE MULTICAST MTU:1500 Metric:1
RX packets:2746252626 errors:0 dropped:1151734 overruns:0 frame:0
TX packets:4109502155 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:427998700000 (408171.3 Mb) TX bytes:3530782240047 (3367216.3 Mb)
Interrupt:40 Memory:d8000000-d8012700
вот установленная версия:
filename: /lib/modules/2.6.27.54-0.2-default/kernel/drivers/net/bnx2.ko
version: 1.8.0
license: GPL
description: Broadcom NetXtreme II BCM5706/5708/5709 Driver
пакеты падают в объемах от 500 до 5000 пакетов несколько раз в час. Сервер (под управлением Postgres) работает нормально - просто dropps раздражает.
попробовав много разных вещей, я спрашиваю: Как я могу узнать, откуда пришли пакеты и почему они были сброшены?
3 ответов
(в интересах тех, кто приходит к этому через поиск) я видел ту же проблему (также с модулем bnx2, IIRC).
вы можете попробовать отключить службу irqbalance. В моем случае это полностью остановило решение.
обратите внимание, что не так давно было много обновлений (RHEL 6) для irqbalance. Обновление прошивки также должны быть проверены, как для основной системы и панели(ы).
мы видели это только очень большой подсеть с очень большим количеством широковещательной / многоадресной активности. Мы не видели этого на одном и том же оборудовании на менее шумной, но все еще очень активной части сети.
потенциально, установка размера кольцевого буфера ethernet для NIC также может быть полезна. Я знаю, что в этой загруженной сети были некоторые изменения для sysctl...
отброшенный пакет означает, что буфер, используемый для хранения пакета для пересылки / обработки, заполнен. Акт просмотра данных пакета для получения информации подразумевает, что у вас есть данные для просмотра в первую очередь (чего вы не делаете, потому что не было места для его хранения).
хороший способ обойти это, чтобы вы могли видеть, какие данные отбрасываются, - это просмотреть дамп вашего трафика для запросов повторной передачи TCP, покидающих ваш сервер. Когда пакет TCP отсутствует, по какой-либо причине ваш сервер собирается попросить его повторно отправить. Ретрансляция даст вам контекст разговора, который вы ищете.
Я бы предложил взглянуть на коммутатор / маршрутизатор, к которому подключен ваш сервер. Он сможет дать вам хорошее представление о потере и пропускной способности через интерфейс к вашему серверу, позволяя вам диагностировать, например, если ваша карта слишком медленная для провод.
редактировать
этот блог цитирует инструмент под названием dropwatch
, что также может дать вам некоторые подсказки.
вы можете столкнуться https://www.novell.com/support/kb/doc.php?id=7007165.
цитата:
начиная с ядра 2.6.37, было изменено значение количества отброшенных пакетов. Раньше отброшенные пакеты, скорее всего, были вызваны ошибкой. Теперь счетчик rx_dropped показывает статистику для отброшенных кадров из-за:
softnet backlog full -- (измеряется от /proc / net/softnet_stat)
плохой / непреднамеренный VLAN теги
неизвестные / незарегистрированные протоколы
кадры IPv6, когда сервер не настроен для IPv6
Если какие-либо кадры удовлетворяют этим условиям, они отбрасываются перед стеком протоколов и счетчик rx_dropped увеличивается.