Administrando ethernet settings en Xen sobre Lenny

Desde que comencé a actualizar masivamente tanto mis servidores virtuales como los físicos a Lenny, algunas cosas comenzaron a comportarse de manera extraña, por ejemplo, el caso de bind9, que comentaba hace poco en otro post, que por defecto rechazaba resolver nombres de dominio recursivamente cuando la solicitud venía de un host diferente. Adicionalmente comenzaron a aparecer otros extraños problemitas que no tenía antes, uno de ellos es que la tarjeta de red no negociaba bien la velocidad a pesar de estar configurada en "auto-negotiation".

En fin nada es perfecto, así que decidí echarle una mirara a la configuración de mi tarjeta de red usando el comando: ethtool eth0

Pero lo único que obtenía era esto:

localhost:/# ethtool eth0
Settings for eth0:
    Link detected: yes

Busque en Google, pero al parecer nadie tenía mi problema recientemente, la única refencia que encontré era de hace más de un año, junio 2008. Y el problema era debido a dependencias, como estaba seguro que ese no era mi problema, porque yo había instalado directamente desde los repositorios oficiales, entonces el error estaba en el uso del comando.

Pero si Uds. estan usando Xen, se habran dado cuenta de que adicionalmente a las interfaces físicas eth0, el instalador crea un bridge donde conecta todas las interfases virtuales de los DomU que esten ejecutandose. Esa intefase se llama "peth0" y usandola pude leer el seteo de los parámetros ethernet de mi tarjeta de red:

localhost:/# ethtool peth0
Settings for peth0:
    Supported ports: [ TP ]
    Supported link modes:   10baseT/Half 10baseT/Full
                            100baseT/Half 100baseT/Full
                            1000baseT/Full
    Supports auto-negotiation: Yes
    Advertised link modes:  10baseT/Half 10baseT/Full
                            100baseT/Half 100baseT/Full
                            1000baseT/Full
    Advertised auto-negotiation: Yes
    Speed: 100Mb/s
    Duplex: Half
    Port: Twisted Pair
    PHYAD: 1
    Transceiver: internal
    Auto-negotiation: on
    Supports Wake-on: pumbag
    Wake-on: g
    Current message level: 0x00000001 (1)
    Link detected: yes

A pesar de que mi switch estaba seteado a 100-full, y tenía la "auto-negociación" habilitada en mi server, por alguna razón esta no parecía trabajar bien. Así que probe cambiar la configuración de mi tarjeta de red manualmente a 100-full, para ello utilicé el comando:

localhost:/# ethtool -s peth0 speed 100 duplex full

Luego verifiqué si los cambios se había aplicado y estos no funcionaban, otra vez tenía 100-half. Entonces opté por la solución de deshabilitar la auto-negociación en mi server tambien, pues había fijado 100-full en mi switch. Para ello utilicé los comando:

localhost:/# ethtool -s eth0 autoneg off && ethtool -s peth0 speed 100 duplex full

Luego de eso, ya podía ver que mi server se había conectado a 100-full, lo cual indicaba claramente que la auto-negociación habilitada en mi server impedía que la interfase sincronizara con el switch correctamente. Luego de eso los problemas de latencia con las conexiones desaparecieron. Lo que me intriga es por qué no tenía ese problema cuando usaba Etch.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.