Вероятной причиной был неисправный порт Ethernet на маршрутизаторе. До 30 апреля 2015 года я не нашел доказательств, подтверждающих это, и не установил связь до 10 августа 2015 года.
Что я должен был сделать
Несколько дополнительных шагов по устранению неполадок:
Я должен был запустить sudo ethtool -S eth0
чтобы увидеть, были ли какие-либо ошибки в статистике контроллера сетевого интерфейса (NIC).
Так как я мог отправлять, но не получать через Ethernet, я мог видеть что-то вроде увеличения статистики rx_crc_errors
при каждой попытке получения.
Я должен был попытаться подключить конец маршрутизатора кабеля Ethernet к другому порту маршрутизатора.
Конечно, я подключил компьютерный конец кабеля Ethernet к двум разным компьютерам, но это привело меня к мысли, что компьютер (Craptop) был неисправен, потому что другой (Deltique) смог подключиться к маршрутизатору.
На работающем компьютере Deltique мне нужно было запустить sudo ethtool eth0
чтобы проверить, была ли установлена хорошая связь.
Deltique имеет пропускную способность 1 Гбит / с, также как и маршрутизатор, поэтому ethtool
должен был показать Speed: 1000Mb/s
и Duplex: Full
. Позднее я узнаю 30 апреля 2015 года, что неисправный порт привел к тому, что ethtool
вернул другие, более относительные значения.
Я должен был запустить тест скорости, чтобы проверить соединение Ethernet, чтобы убедиться, что я получаю полную производительность, ожидаемую между Deltique и маршрутизатором.
Если бы я сделал тест скорости, я бы, вероятно, увидел скорость передачи 1 МБ / с, что указывает на проблему со связью даже в Deltique .
Чтобы исключить проблему с кабелем, я должен был попробовать использовать другой кабель Gigabit Ethernet.
Оказывается, с кабелем все было в порядке, но в любом случае это хороший шаг по устранению неполадок.
Доказательства и объяснения
30 апреля 2015 года я заметил, что моя верная команда rsync -avzHXShPs
максимальных скоростях около 1 МБ / с. Я исключил другой трафик, отслеживая iftop
и пытаясь загрузить Интернет на другом компьютере, который передавал данные в десять раз быстрее.
Я проверил сетевое соединение с помощью ethtool
:
root@node51 [~]# ethtool eth0
Settings for eth0:
Supported ports: [ TP MII ]
Supported link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Half 1000baseT/Full
Supported pause frame use: No
Supports auto-negotiation: Yes
Advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Half 1000baseT/Full
Advertised pause frame use: Symmetric Receive-only
Advertised auto-negotiation: Yes
Link partner advertised link modes: 10baseT/Half
Link partner advertised pause frame use: No
Link partner advertised auto-negotiation: No
Speed: 10Mb/s
Duplex: Half
Port: MII
PHYAD: 0
Transceiver: internal
Auto-negotiation: on
Supports Wake-on: pumbg
Wake-on: g
Current message level: 0x00000033 (51)
drv probe ifdown ifup
Link detected: yes
Ага! 10 Мбит / с в полудуплексном режиме. Это не нормально и очень медленно. Для справки, это был ожидаемый (хороший) вывод, полученный при переключении портов Ethernet на маршрутизаторе:
root@node51 [~]# ethtool eth0
Settings for eth0:
Supported ports: [ TP MII ]
Supported link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Half 1000baseT/Full
Supported pause frame use: No
Supports auto-negotiation: Yes
Advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Half 1000baseT/Full
Advertised pause frame use: Symmetric Receive-only
Advertised auto-negotiation: Yes
Link partner advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
Link partner advertised pause frame use: Symmetric
Link partner advertised auto-negotiation: Yes
Speed: 1000Mb/s
Duplex: Full
Port: MII
PHYAD: 0
Transceiver: internal
Auto-negotiation: on
Supports Wake-on: pumbg
Wake-on: g
Current message level: 0x00000033 (51)
drv probe ifdown ifup
Link detected: yes
Компьютер и маршрутизатор пытались согласовывать более медленные и медленные скорости, пока не удалось установить надежную. Самый медленный полудуплекс 10BASE-T был выбран.
Принудительное выполнение полной дуплексной 1000BASE-T (ethtool -s eth0 speed 1000 duplex full
) ожидаемой производительности приводило к тому, что пораженный компьютер выходил из сети, что настоятельно предполагало, что маршрутизатор не хочет говорить по более быстрой линии связи.
Craptop, который в первую очередь ограничен 100 Мбит / с, вероятно, не имел возможности договориться о полудуплексной 10 Мбит / с.
Теперь, когда я определил неправильный порт Ethernet, все, что мне нужно сделать, это не использовать этот порт или получить новый маршрутизатор.
27 июля 2015 года я вернул неисправный маршрутизатор после установки нового маршрутизатора.
Сегодня Craptop работает на отказоустойчивом сетевом соединении с полнодуплексным Ethernet-соединением 100 Мбит / с:
root@node52 [~]# cat /proc/net/bonding/bond0
Ethernet Channel Bonding Driver: v3.7.1 (April 27, 2011)
Bonding Mode: fault-tolerance (active-backup)
Primary Slave: eth0 (primary_reselect always)
Currently Active Slave: eth0
MII Status: up
MII Polling Interval (ms): 100
Up Delay (ms): 0
Down Delay (ms): 0
Slave Interface: wlan0
MII Status: up
Speed: Unknown
Duplex: Unknown
Link Failure Count: 3
Permanent HW addr: 00:1f:3a:55:dc:0d
Slave queue ID: 0
Slave Interface: eth0
MII Status: up
Speed: 100 Mbps
Duplex: full
Link Failure Count: 3
Permanent HW addr: 00:1e:68:32:4a:b5
Slave queue ID: 0