e1000e: Hardware Unit Hang — Исправление зависания сетевых карт Intel в Linux
Архитектура ошибки и симптомы сбоя
Сбой «e1000e: Hardware Unit Hang on network interface» — известная проблема драйвера ядра e1000e для гигабитных сетевых контроллеров Intel (серии I217, I218, I219, 82574L). Ошибка означает, что аппаратный блок передачи (Transmit Unit / TX DMA Ring) завис при попытке отправить TCP-сегмент с аппаратной разгрузкой контрольных сумм или фрагментации. Сторожевой таймер драйвера (Watchdog Task) фиксирует отсутствие продвижения очереди TX и инициирует аварийный перезапуск сетевого адаптера, вызывая микрообрыв связи на 2–5 секунд.
Диагностическая таблица параметров сбоя
| Параметр | Значение | Инженерный смысл сбоя |
|---|---|---|
| e1000e | Intel PCIe GbE Driver | Драйвер для интегрированных сетевых карт Intel Gigabit Ethernet. |
| Hardware Unit Hang | TX Queue Freeze | Аппаратная логика контроллера зависла при обработке дескриптора пакета. |
| Impact | Link Reset / Ping Drop | Кратковременная потеря сетевого линка и сброс активных соединений. |
Пошаговое дерево решений и сценарии траблшутинга
Сценарий 1: Отключение аппаратных разгрузок TCP (TSO, GSO, GRO)
В 90% случаев аппаратное зависание чипа вызывается сбоем механизма TCP Segmentation Offload (TSO):
# Отключение аппаратной фрагментации пакетов на интерфейсе eth0:
sudo ethtool -K eth0 tso off gso off gro off
# Проверка текущего статуса разгрузок:
ethtool -k eth0 | grep -E "(segmentation|generic-receive)"Сценарий 2: Отключение энергосбережения PCIe ASPM и EEE (Energy Efficient Ethernet)
# Отключение энергосбережения Ethernet на интерфейсе:
sudo ethtool --set-eee eth0 eee off
# Отключение энергосбережения PCIe в конфигурации GRUB (/etc/default/grub):
GRUB_CMDLINE_LINUX="pcie_aspm=off e1000e.IntMode=1"
sudo update-grub
sudo rebootСценарий 3: Закрепление отключения TSO через Systemd / Netplan
Для сохранения настроек после перезагрузки создайте systemd-сервис:
# Создайте файл /etc/systemd/system/e1000e-fix.service:
cat <<EOF | sudo tee /etc/systemd/system/e1000e-fix.service
[Unit]
Description=Fix Intel e1000e Hangs
After=network.target
[Service]
Type=oneshot
ExecStart=/sbin/ethtool -K eth0 tso off gso off gro off
[Install]
WantedBy=multi-user.target
EOF
sudo systemctl enable --now e1000e-fix.serviceITSTM выполнит установку актуальных DKMS-сборок драйверов Intel, перепрошивку Option ROM сетевых плат и стабилизацию сетевой инфраструктуры.
Частые вопросы (FAQ)
Снижает ли производительность отключение TSO/GSO?
На гигабитных скоростях (1 Gbps) отключение TSO увеличивает нагрузку на современные процессоры менее чем на 1-2%, но полностью устраняет риск внезапных зависаний сетевой карты.
Почему эта проблема чаще возникает на гипервизорах Proxmox / ESXi?
Мостовые соединения (Linux Bridge / Open vSwitch) передают крупные агрегированные TCP-пакеты (до 64KB) напрямую в физический драйвер e1000e, что мгновенно переполняет внутренние FIFO буферы чипов Intel I218/I219.
Что означает параметр e1000e.IntMode=1?
Параметр IntMode=1 принудительно переключает контроллер с режима MSI-X на классический режим прерываний MSI, что решает проблемы совместимости с некоторыми чипсетами материнских плат.
Как обновить драйвер e1000e до последней версии от Intel?
Загрузите исходные коды драйвера с сайта Intel (или репозитория вендора) и выполните сборку через DKMS, чтобы модуль автоматически пересобирался при обновлениях ядра.