как найти, какие пакеты были отброшены

Я получаю тысячи отброшенных пакетов с сетевой карты 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 увеличивается.