Назад | Перейти на главную страницу

Причины, по которым интерфейс Ethernet не отвечает на ~ 30 секунд, а затем подтверждает все полученные пакеты?

Первый вопрос! Здравствуй!

Работает на Ubuntu 16.04.

Информация об оборудовании: lspci | awk '/[Nn]et/ {print $1}' | xargs -i% lspci -ks %

00:1f.6 Ethernet controller: Intel Corporation Ethernet Connection (2) I219-V
    Subsystem: ASUSTeK Computer Inc. Ethernet Connection (2) I219-V
    Kernel driver in use: e1000e
    Kernel modules: e1000e
02:00.0 Network controller: Intel Corporation Device 093c (rev 3a)
    Subsystem: Intel Corporation Device 7001

Я сталкиваюсь с некоторыми странными остановками Ethernet при запуске приложения P2P -> точнее: https://github.com/prysmaticlabs/prysm . Согласно тем же журналам приложений, к моей машине подключено около 30 одноранговых узлов. Использование полосы пропускания было низким (пиковое значение 6 Мбит / с), я использую кабель Cat6 и получил около 120 Мбит / с восходящего оптоволоконного канала, а порты правильно перенаправлены, как сообщает ты меня видишь орг. Другие приложения P2P, например торренты, не демонстрируют противоречивого поведения.

Как уже говорилось, симптомы странные. Когда я запускаю приложение, оно вроде не теряет связь. Но в тот момент, когда другое приложение, которое нужно запустить в сети (например, просмотр веб-страниц, чат, передача файлов), интерфейс останавливается на секунды или даже минуты. Я заметил это, потому что просмотр часто отключался.

Когда происходит срыв, приложение продолжает работать нормально, но все другие приложения теряют подключение к Интернету. Я отслеживаю ICMP (пинг) трафик:

В обоих устройствах он перестает возвращать какой-либо ответ (терминал прекращает вывод, нет обратной связи и нет таймаутов). После долгого простоя все пакеты неожиданно подтверждаются. См. Этот образец:

64 bytes from 192.168.1.1: icmp_seq=1122 ttl=64 time=0.304 ms
64 bytes from 192.168.1.1: icmp_seq=1123 ttl=64 time=0.303 ms
64 bytes from 192.168.1.1: icmp_seq=1124 ttl=64 time=0.313 ms
64 bytes from 192.168.1.1: icmp_seq=1125 ttl=64 time=0.263 ms
64 bytes from 192.168.1.1: icmp_seq=1126 ttl=64 time=0.266 ms
64 bytes from 192.168.1.1: icmp_seq=1127 ttl=64 time=0.273 ms
64 bytes from 192.168.1.1: icmp_seq=1128 ttl=64 time=0.289 ms
64 bytes from 192.168.1.1: icmp_seq=1129 ttl=64 time=0.276 ms
64 bytes from 192.168.1.1: icmp_seq=1130 ttl=64 time=0.280 ms
64 bytes from 192.168.1.1: icmp_seq=1131 ttl=64 time=0.635 ms
64 bytes from 192.168.1.1: icmp_seq=1132 ttl=64 time=0.292 ms
64 bytes from 192.168.1.1: icmp_seq=1133 ttl=64 time=0.537 ms
64 bytes from 192.168.1.1: icmp_seq=1134 ttl=64 time=0.299 ms
64 bytes from 192.168.1.1: icmp_seq=1135 ttl=64 time=0.272 ms
64 bytes from 192.168.1.1: icmp_seq=1136 ttl=64 time=27625 ms
64 bytes from 192.168.1.1: icmp_seq=1137 ttl=64 time=26635 ms
64 bytes from 192.168.1.1: icmp_seq=1138 ttl=64 time=25631 ms
64 bytes from 192.168.1.1: icmp_seq=1139 ttl=64 time=24640 ms
64 bytes from 192.168.1.1: icmp_seq=1140 ttl=64 time=23641 ms
64 bytes from 192.168.1.1: icmp_seq=1141 ttl=64 time=22671 ms
64 bytes from 192.168.1.1: icmp_seq=1142 ttl=64 time=21648 ms
64 bytes from 192.168.1.1: icmp_seq=1143 ttl=64 time=20652 ms
64 bytes from 192.168.1.1: icmp_seq=1144 ttl=64 time=19658 ms
64 bytes from 192.168.1.1: icmp_seq=1145 ttl=64 time=18655 ms
64 bytes from 192.168.1.1: icmp_seq=1146 ttl=64 time=17658 ms
64 bytes from 192.168.1.1: icmp_seq=1147 ttl=64 time=16659 ms
64 bytes from 192.168.1.1: icmp_seq=1148 ttl=64 time=15655 ms
64 bytes from 192.168.1.1: icmp_seq=1149 ttl=64 time=14632 ms
64 bytes from 192.168.1.1: icmp_seq=1150 ttl=64 time=13611 ms
64 bytes from 192.168.1.1: icmp_seq=1151 ttl=64 time=12588 ms
64 bytes from 192.168.1.1: icmp_seq=1152 ttl=64 time=11565 ms
64 bytes from 192.168.1.1: icmp_seq=1153 ttl=64 time=10542 ms
64 bytes from 192.168.1.1: icmp_seq=1154 ttl=64 time=9522 ms
64 bytes from 192.168.1.1: icmp_seq=1155 ttl=64 time=8501 ms
64 bytes from 192.168.1.1: icmp_seq=1156 ttl=64 time=7478 ms
64 bytes from 192.168.1.1: icmp_seq=1157 ttl=64 time=6459 ms
64 bytes from 192.168.1.1: icmp_seq=1158 ttl=64 time=5436 ms
64 bytes from 192.168.1.1: icmp_seq=1159 ttl=64 time=4415 ms
64 bytes from 192.168.1.1: icmp_seq=1160 ttl=64 time=3391 ms
64 bytes from 192.168.1.1: icmp_seq=1161 ttl=64 time=2370 ms
64 bytes from 192.168.1.1: icmp_seq=1162 ttl=64 time=1350 ms
64 bytes from 192.168.1.1: icmp_seq=1163 ttl=64 time=320 ms
64 bytes from 192.168.1.1: icmp_seq=1164 ttl=64 time=2.73 ms
64 bytes from 192.168.1.1: icmp_seq=1165 ttl=64 time=0.258 ms
64 bytes from 192.168.1.1: icmp_seq=1166 ttl=64 time=0.303 ms

Затем сеть на некоторое время возвращается в нормальное состояние.

Вещи, которые я пробовал:

На данный момент у меня есть две теории:

1) Либо шлюз ведет себя странно (проверить не могу). Я отбрасываю это, потому что другие устройства в сети работают нормально, как в локальных, так и в внешних подключениях 2) Или какой-то буфер памяти задыхается, но не знаю какой.

Буду признателен за вдохновение!

После дополнительной отладки всех элементов в сети я обнаружил, что, хотя эффекты в других устройствах гораздо менее заметны, они действительно подвержены заторам трафика, поэтому это наводит меня на мысль, что проблема заключается в маршрутизаторе / коммутаторе, который, вероятно, не справляется с требованиями приложения P2P, возможно, из-за преобразований NAT. Я постараюсь найти более продвинутое оборудование, чтобы решить эту проблему.

Для этой карты вы можете попробовать загрузиться с этим параметром ядра. Это объясняет, как это сделать.:

pcie_aspm=off

Другой способ - использовать ethtool. Например:

sudo ethtool -G eth0 rx 256 tx 256

Это происходит из Вот.