3

У меня есть собственный домашний сервер, который выполняет роль шлюза в интернет (не знаю, подходит ли он для него). В основном он имеет два порта Ethernet, один из которых подключен к моему провайдеру, а другой - к коммутатору локальной сети. Маршрутизация и NAT успешно настроены и куча других сервисов.

Недавно я перешел с Ubuntu 14.04 на Debian 9 (новая, чистая установка) и теперь медленно восстанавливаю предыдущую конфигурацию. Я застрял довольно рано, так как я сделал только базовую конфигурацию сети, чтобы позволить другим компьютерам / телефонам / телевизорам / и т.д. Получить доступ к Интернету, но заметил, что происходит много потерь пакетов и соединение, кажется, зависает на несколько секунд. Проверка журналов дала мне это:

        [  212.088208] e1000e 0000:00:19.0 eth0: Detected Hardware Unit Hang:
                     TDH                  <69>
                     TDT                  <aa>
                     next_to_use          <aa>
                     next_to_clean        <69>
                   buffer_info[next_to_clean]:
                     time_stamp           <ffffa7f6>
                     next_to_watch        <69>
                     jiffies              <ffffa9e8>
                     next_to_watch.status <0>
                   MAC Status             <80083>
                   PHY Status             <796d>
                   PHY 1000BASE-T Status  <3800>
                   PHY Extended Status    <3000>
                   PCI Status             <10>
    [  214.072275] e1000e 0000:00:19.0 eth0: Detected Hardware Unit Hang:
                     TDH                  <69>
                     TDT                  <aa>
                     next_to_use          <aa>
                     next_to_clean        <69>
                   buffer_info[next_to_clean]:
                     time_stamp           <ffffa7f6>
                     next_to_watch        <69>
                     jiffies              <ffffabd8>
                     next_to_watch.status <0>
                   MAC Status             <80083>
                   PHY Status             <796d>
                   PHY 1000BASE-T Status  <3800>
                   PHY Extended Status    <3000>
                   PCI Status             <10>
    [  216.088094] e1000e 0000:00:19.0 eth0: Detected Hardware Unit Hang:
                     TDH                  <69>
                     TDT                  <aa>
                     next_to_use          <aa>
                     next_to_clean        <69>
                   buffer_info[next_to_clean]:
                     time_stamp           <ffffa7f6>
                     next_to_watch        <69>
                     jiffies              <ffffadd0>
                     next_to_watch.status <0>
                   MAC Status             <80083>
                   PHY Status             <796d>
                   PHY 1000BASE-T Status  <3800>
                   PHY Extended Status    <3000>
                   PCI Status             <10>
    [  218.071082] ------------[ cut here ]------------
    [  218.072129] WARNING: CPU: 0 PID: 0 at /build/linux-EAZfyE/linux-4.9.51/net/sched/sch_generic.c:316 dev_watchdog+0x22d/0x230
    [  218.073249] NETDEV WATCHDOG: eth0 (e1000e): transmit queue 0 timed out
    [  218.074368] Modules linked in: xt_conntrack iptable_filter ipt_MASQUERADE nf_nat_masquerade_ipv4 iptable_nat nf_conntrack_ipv4 nf_defrag_ipv4 nf_nat_ipv4 nf_nat nf_conntrack iptable_mangle intel_rapl x86_pkg_temp_thermal intel_powerclamp coretemp kvm_intel kvm irqbypass crct10dif_pclmul crc32_pclmul iTCO_wdt iTCO_vendor_support ghash_clmulni_intel intel_cstate intel_uncore intel_rapl_perf pcspkr i915 sg drm_kms_helper lpc_ich mei_me mfd_core drm ie31200_edac joydev evdev mei edac_core shpchp i2c_algo_bit battery video button ip_tables x_tables autofs4 ext4 crc16 jbd2 fscrypto ecb glue_helper lrw gf128mul ablk_helper cryptd aes_x86_64 mbcache raid10 raid456 async_raid6_recov async_memcpy async_pq async_xor async_tx xor raid6_pq libcrc32c crc32c_generic raid0 multipath linear hid_generic usbhid hid
    [  218.078853]  raid1 md_mod sd_mod crc32c_intel i2c_i801 ahci i2c_smbus libahci libata scsi_mod ehci_pci ehci_hcd xhci_pci xhci_hcd e1000e ptp usbcore pps_core usb_common fan thermal
    [  218.082049] CPU: 0 PID: 0 Comm: swapper/0 Not tainted 4.9.0-4-amd64 #1 Debian 4.9.51-1
    [  218.083772] Hardware name:                  /DQ77KB, BIOS KBQ7710H.86A.0051.2013.0329.1350 03/29/2013
    [  218.085468]  0000000000000000 ffffffffa7729974 ffff98909e203e20 0000000000000000
    [  218.087205]  ffffffffa7476eae 0000000000000000 ffff98909e203e78 ffff989094e28000
    [  218.088980]  0000000000000000 ffff989094fb9c80 0000000000000001 ffffffffa7476f2f
    [  218.090766] Call Trace:
    [  218.092579]  <IRQ>
    [  218.092597]  [<ffffffffa7729974>] ? dump_stack+0x5c/0x78
    [  218.094413]  [<ffffffffa7476eae>] ? __warn+0xbe/0xe0
    [  218.096268]  [<ffffffffa7476f2f>] ? warn_slowpath_fmt+0x5f/0x80
    [  218.098133]  [<ffffffffa74aed52>] ? enqueue_task_fair+0x82/0x940
    [  218.100024]  [<ffffffffa792cb2d>] ? dev_watchdog+0x22d/0x230
    [  218.101909]  [<ffffffffa792c900>] ? qdisc_rcu_free+0x40/0x40
    [  218.103860]  [<ffffffffa74e4020>] ? call_timer_fn+0x30/0x110
    [  218.105766]  [<ffffffffa74e4524>] ? run_timer_softirq+0x1d4/0x430
    [  218.107709]  [<ffffffffa74f4ca0>] ? tick_sched_handle.isra.12+0x20/0x50
    [  218.109654]  [<ffffffffa74f4d08>] ? tick_sched_timer+0x38/0x70
    [  218.111630]  [<ffffffffa7a0b0d5>] ? __do_softirq+0x105/0x290
    [  218.113594]  [<ffffffffa747cf8e>] ? irq_exit+0xae/0xb0
    [  218.115567]  [<ffffffffa7a0aeee>] ? smp_apic_timer_interrupt+0x3e/0x50
    [  218.117536]  [<ffffffffa7a0a202>] ? apic_timer_interrupt+0x82/0x90
    [  218.119509]  <EOI>
    [  218.119527]  [<ffffffffa78cd31a>] ? cpuidle_enter_state+0x11a/0x2b0
    [  218.121505]  [<ffffffffa74b9634>] ? cpu_startup_entry+0x154/0x240
    [  218.123486]  [<ffffffffa8138f57>] ? start_kernel+0x443/0x463
    [  218.125426]  [<ffffffffa8138120>] ? early_idt_handler_array+0x120/0x120
    [  218.127400]  [<ffffffffa8138408>] ? x86_64_start_kernel+0x14c/0x170
    [  218.129384] ---[ end trace 6cd1142bfcc66b87 ]---
    [  218.131367] e1000e 0000:00:19.0 eth0: Reset adapter unexpectedly
    [  222.052843] e1000e: eth0 NIC Link is Up 1000 Mbps Full Duplex, Flow Control: Rx/Tx

Я нашел этот вопрос: e1000e неожиданно сбросил адаптер / Обнаружено зависание аппаратного блока, что, похоже, та же проблема, но ни одно из найденных исправлений не сработало.

Я старался:

  • Загрузка ядра с помощью pcie_aspm=off
  • Отключение странных опций: ethtool -K eth0 gso off gro off tso off
  • Отключен ASPM в биосе
  • Отключены все функции энергосбережения в BIOS
  • Использовал скрипт fixeep-82573-dspd.sh котором говорилось, что мое оборудование несовместимо с этим исправлением или чем-то в этом роде.
  • Скомпилированный новейший драйвер с сайта Intel

Что еще я могу попробовать? Я уже потерял весь день на этом, интернет-соединение непригодно для использования, всем нужно использовать собственный интернет LTE/3G на телефонах для доступа в интернет.

Является ли Debian плохим выбором для такого сервера?

2 ответа2

4

В ServerFault есть вопрос, в котором есть еще два возможных исправления:

https://serverfault.com/questions/616485/e1000e-reset-adapter-unexpectedly-detected-hardware-unit-hang

Как уже упоминалось, вы можете попробовать:

  • отключение расширенного состояния энергосбережения C1 (C1E) в настройках BIOS или
  • отключение выгрузки контрольной суммы TCP с помощью ethtool -K eth0 tx off rx off

Если вы можете извлечь модуль ядра e1000e.ko из ваших резервных копий, вы можете использовать команду modinfo для просмотра версии драйвера.

Чтобы определить возможность обновления микропрограммы NIC, необходима точная идентификация точной модели NIC. По выводу вашего журнала я вижу, что ваша сетевая карта - это устройство PCI 00:19.0, а имя сетевого интерфейса - eth0 . Пожалуйста, запустите эти команды от имени пользователя root:

# lspci -nn -s 00:19.0 -v
# ethtool -i eth0

Первая команда показывает номера идентификаторов PCI сетевой карты, а вторая команда имеет номер версии микропрограммы сетевого адаптера в своих выходных данных.

Если сетевой адаптер Intel 82579V (PCI ID 8086:1503), в нем есть известная ошибка, связанная с состояниями энергосбережения, которая также вызвала проблемы в Windows 8 и новее (т. Е. В операционных системах, достаточно новых для использования более продвинутые энергосберегающие состояния современного оборудования). Обновление с Ubuntu 14.04 до Debian 9 могло привести к эквивалентному обновлению в энергосберегающем коде Linux, что вызвало ошибку.

У Intel есть специальный инструмент обновления прошивки для чипа 82579V, который можно использовать даже с сетевыми картами, встроенными в материнские платы. К сожалению, я думаю, что инструмент обновления должен быть запущен в Windows.

0

Проблема решена путем ... переключения кабелей и конфигурации между сетевыми картами. Таким образом, eth0 был устройством на стороне локальной сети, а eth1 был устройством на стороне Интернета. После переключения eth0 стал интернет-устройством, а eth1 - локальной. Не знаю почему и как, но просто это работает. Даже под большой нагрузкой через пару часов все ок. Когда я переключаю его обратно в исходную конфигурацию, драйвер падает после не более 2 минут.

Я совершенно не могу найти причину, почему это происходит, но хорошо ... сейчас это хорошо.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .