martes, 22 de diciembre de 2015

Configurar la velocidad de negociación y duplex de una interfaz en Red Hat

Puede haber situaciones en las que necesitemos que un servidor pinchado en un switch de 1000 Mb/s tenga que negociar sus comunicaciones a 100 Mb/s. Aunque a priori puede parecer que el supuesto no es aplicable en ningún caso, para los que nos enfrentamos todos los días a la ingeniería de redes y sistemas encontraremos un ejemplo donde esto aplica.
Si tenemos conectados todos los servidores a un switch que gestiona a 1000 Mb/s y entre ellos se halla un servidor que es el encargado de realizar y recepcionar los backup`s del resto, en condiciones normales cuando el servidor de backup se esté trayendo las copias de seguridad de uno de ellos el tráfico por ambas bocas de los servidores será a 1000 Mb/s y esto provocará que el servidor de origen tenga prácticamente el 95%-100% de su tráfico ocupado con esta transferencia, impidiendo de esta manera que pueda seguir prestando el servicio normal que debería prestar como por ejemplo que usuarios puedan acceder a sus aplicaciones. Pero si por el contrario forzamos a que el servidor de backup, pese a estar en un switch de giga, negocie las conexiones a 100 Mb/s nunca nos encontraremos con este problema dado que en la transferencia descrita antes la boca del servidor origen solo tendría una carga máxima de 100 Mb/s, pudiendo destinar otros 900 Mb/s al resto de servicios normales que tenga alojados ya que el servidor de backup no puede negociar a más de 100 Mb/s.
Esta es una casuística real donde podemos aplicar esto pero no voy a entrar en si se podría realizar/complementar con otras medidas de control como limitar la velocidad de la boca del servidor de backup a 100 Mb/s si tenemos un switch de capa 3 o limitar el ancho de banda en la transferencia si la aplicación de backup lo permite, por ejemplo.

Para realizar esto deberemos utilizar el parámetro ETHTOOL_OPTS dentro del script de configuración de la interfaz (para mirar como configurar estos script de manera genérica en Red Hat podéis consultar este post). Por defecto, si no le definimos ETHTOOL_OPTS, el sistema establecerá esta opción como ETHTOOL_OPTS="autoneg on" pero si queremos por ejemplo limitar a 100 Mb/s la velocidad de la tarjeta y asignarle un duplex full deberemos indicarle la siguiente opción:

ETHTOOL_OPTS="speed 100 duplex full autoneg off"

Quedando un script parecido a este:

DEVICE=eth0
BOOTPROTO=none
HWADDR=b8:ca:AA:f8:15:AA
IPV6INIT=yes
NM_CONTROLLED=yes
ONBOOT=yes
TYPE=Ethernet
UUID="feAAeb60-103a-4a8b-8cb4-EE"
IPADDR=10.0.10.69
NETMASK=255.255.255.128
GATEWAY=10.0.10.1
ETHTOOL_OPTS="speed 100 duplex full autoneg off"
DNS1=10.0.10.80
USERCTL=no

Tras realizar este script necesitaremos reiniciar el servicio network para que coja la nueva configuración:

rencinar@lapsusmentis:~$ /etc/init.d/network restart

Una vez que tenemos nuestra tarjeta funcionando con la nueva configuración, podremos comprobar si está funcionando correctamente mediante el comando ethtool <interfaz de red>.

[root@lapsusmentis ~]# ethtool eth0
Settings for eth0:
        Supported ports: [ TP ]
        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
        Advertised auto-negotiation: Yes
        Link partner advertised link modes:  10baseT/Half 10baseT/Full
                                             100baseT/Half 100baseT/Full
        Link partner advertised pause frame use: Symmetric
        Link partner advertised auto-negotiation: Yes
        Speed: 100Mb/s
        Duplex: Full
        Port: Twisted Pair
        PHYAD: 1
        Transceiver: internal
        Auto-negotiation: on
        MDI-X: off
        Supports Wake-on: g
        Wake-on: d
        Current message level: 0x000000ff (255)
                               drv probe link timer ifdown ifup rx_err tx_err
        Link detected: yes

En mi caso vemos que tras el cambio está funcionando a 100 Mb/s y Duplex full aunque la máquina esta en un switch donde por defecto se negocia a 1000 Mb/s.

No hay comentarios:

Publicar un comentario