como faço para desativar a negociação automática e forçar configurações Ethernet específicas?

2

Eu tenho um Dell r710 (rodando o Debian GNU / Linux 6.0) que atualmente está em um datacenter a centenas de quilômetros de distância, e o cartão ethernet está preso em 10baseT half duplex. 10baseT está OK, mas eu quero que seja full duplex.

O cartão em questão é um broadcom BCM5709:

areion:~# lspci |grep Ethernet
01:00.0 Ethernet controller: Broadcom Corporation NetXtreme II BCM5709 Gigabit Ethernet (rev 20)
01:00.1 Ethernet controller: Broadcom Corporation NetXtreme II BCM5709 Gigabit Ethernet (rev 20)
02:00.0 Ethernet controller: Broadcom Corporation NetXtreme II BCM5709 Gigabit Ethernet (rev 20)
02:00.1 Ethernet controller: Broadcom Corporation NetXtreme II BCM5709 Gigabit Ethernet (rev 20)

usando o driver / firmware bnx2:

areion:~# apt-cache policy firmware-bnx2
firmware-bnx2:
  Installed: 0.28
  Candidate: 0.28
  Version table:
 *** 0.28 0
        500 http://ftp.us.debian.org/debian/ squeeze/non-free amd64 Packages
        100 /var/lib/dpkg/status

E executando o kernel de ações para squeeze:

areion:~# uname -a
Linux areion 2.6.32-5-amd64 #1 SMP Wed Jan 12 03:40:32 UTC 2011 x86_64 GNU/Linux

Eu tentei alterar as configurações da Ethernet:

ethtool -s eth0 speed 10 duplex full autoneg off

Mas, depois, perco toda a conectividade e tenho que reinicializar o servidor para me conectar a ele novamente. Para evitar a necessidade de reinicializar constantemente o servidor e descobrir se o comando ethtool estava travado, mudei para o script:

#!/bin/bash

ethtool -s eth0 speed 10 duplex full autoneg off 2>&1 > ethtool.log &

sleep 10
if [ $(jobs -r |wc -l) -gt 0 ]; then
   kill %1 || kill -9 %1
else
  echo '-----------' >> ethtool.log
  ethtool eth0 >> ethtool.log
fi
dmesg |tail > dmesg-recent.log

ethtool -s eth0 autoneg on

Isso me permite ver o status da interface depois de executar o comando:

Settings for eth0:
        Supported ports: [ TP ]
        Supported link modes:   10baseT/Half 10baseT/Full 
                                100baseT/Half 100baseT/Full 
                                1000baseT/Full 
        Supports auto-negotiation: Yes
        Advertised link modes:  Not reported
        Advertised pause frame use: No
        Advertised auto-negotiation: No
        Speed: Unknown!
        Duplex: Unknown! (255)
        Port: Twisted Pair
        PHYAD: 1
        Transceiver: internal
        Auto-negotiation: off
        MDI-X: Unknown
        Supports Wake-on: g
        Wake-on: d
        Link detected: no

Do dmesg:

[  442.865157] bnx2: eth0 NIC Copper Link is Down

Parece que a negociação automática está falhando ou o switch em que estou conectado está anunciando o formato 10Mbit / half duplex. Foi-me dito que o switch está sendo executado em 10M full duplex.

Isso pode ser um problema de driver, problema de hardware, problema de cabo, problema de comutação? Há algo que eu possa fazer remotamente para identificar a origem do problema ou, pelo menos, eliminar possibilidades?

Atualizar :

Desligar a negociação automática e definir as opções para 10 / HD, 10 / FD, 100 / HD, 100 / FD, etc. (qualquer outra coisa que não negociação automática 10 / HD) resulta em NO-CARRIER , conforme relatado por ip link show dev eth0 . O mesmo é válido para deixar a negociação automática e anunciar algo diferente de 10 / HD. Existe alguma maneira de isso ser algo diferente de um problema com a troca?

    
por vezult 29.03.2011 / 14:37

3 respostas

2

É melhor ter a negociação automática ativada nos dois lados. Esta é a recomendação atual dos fornecedores de rede (incluindo a Cisco). Consulte: link

Para o seu problema, você tem que descobrir como ele está configurado no final remoto. Se for uma negociação automática, você também deve usar a negociação automática em seu servidor. Se estiver definido em uma velocidade e duplex específicos, você deverá corresponder ao terminal remoto.

Tenha em mente que é possível manter a negociação e permitir apenas a negociação para uma determinada velocidade e duplex. Além disso, a publicidade de recursos pode ser configurável.

Se a placa de rede tiver negociado em 10 / HD, isso geralmente significa que a extremidade remota tem a negociação desativada e está definida como 10 / FD. Seu desempenho ruim é causado pela incompatibilidade de duplex.

Você também deve tentar com uma placa de rede diferente. Alterar o driver não ajudará porque a detecção de link (para detectar a portadora e a velocidade) é feita pela parte PHY da NIC.

    
por 29.03.2011 / 14:46
0

Você pode colocar outro dispositivo como um comutador entre você e o Servidor para alterar fisicamente as configurações? Isso pode ajudar.

    
por 29.03.2011 / 15:36
0

Não é recomendado desabilitar a negociação automática, mas se você ainda decidir, desative-a nas duas extremidades e defina ambas as extremidades para usar exatamente a mesma velocidade e duplex. Se você desativar apenas a negociação automática em uma extremidade, a outra extremidade será forçada a assumir 10 MB / HD. Se você não tiver acesso ao comutador na outra extremidade do cabo Ethernet ou esse comutador não suportar tal personalização, desabilitar a negociação automática não é uma opção. Em alguns casos, você pode deixar a negociação automática ativada, mas diga ao cartão ou alterne para anunciar uma velocidade mais baixa ou half-duplex.

    
por 30.03.2011 / 19:09