Contrôler le fonctionnement de votre carte réseau

Ma carte réseau sature, un peu, beaucoup, à la folie

La carte réseau et d'une façon générale la bande passante sont des éléments clés du bon fonctionnement d'un site Web.
Passé les ressources classiques comme la mémoire, la CPU, les disques et la bande passante, le hardware fait la différence en environnement de production.

Cet article vous présente comment déterminer si une carte réseau est saturée sous Linux Ubuntu et autre Debian like.

Caractéristiques de votre carte réseau

L'outil mii-tool, pour Media Independent Interface, affiche les informations de la carte réseau.
En ligne de commande :

# mii-tool -v
eth0: negotiated 100baseTx-FD, link ok
  product info: vendor 00:07:32, model 17 rev 5
  basic mode:   autonegotiation enabled
  basic status: autonegotiation complete, link ok
  capabilities: 1000baseT-HD 1000baseT-FD 100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD
  advertising:  100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD flow-control
  link partner: 1000baseT-HD 1000baseT-FD 100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD

La 1ère ligne indique que la connexion est OK et que sa vitesse s'est établis après négociation avec l'infrastructure réseau à 100Mbps Full Duplex, 100Mbps en descente et en montée simultanément.
La 5ème ligne indique que la carte peut supporter une vitesse de 1Gbps.

Il existe également l'outil ethtool. Il affiche également les limites physiques de votre carte réseau ainsi que sa configuration courante.

Pour installer ethtool, en ligne de commande :

# aptitude install ethtool

Pour l'utiliser :

# ethtool eth0

Settings for eth0:
    Supported ports: [ TP MII ]
    Supported link modes:   10baseT/Half 10baseT/Full 
                            100baseT/Half 100baseT/Full 
                            1000baseT/Half 1000baseT/Full 
    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 
    Link partner advertised pause frame use: No
    Link partner advertised auto-negotiation: Yes
    Speed: 100Mb/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

Utilisation de votre carte réseau

iptraf est un outil qui permet de monitorer l'activité d'une carte réseau.

Pour l'installer, en ligne de commande :

# aptitude install iptraf

Pour lancer le monitoring :

# iptraf

Choisissez l'option Detailed interface statistics, l'interface réseau à surveiller. iptraf vous affiche alors la bande passante totale en cours d'utilisation.
Par exemple Total rates: 63248,2 kbits/sec indique 63Mbps d'utilisé. Avec une carte réseau qui supporte 100Mbps, la limite n'est donc pas la carte réseau.

Générons un trafic réseau plus important, par exemple à l'aide d'un Apache Bench sur un serveur Varnish :

$ ab -n100000 -c100 http://192.168.0.1:6081/
...
Requests per second:    16496.55 [#/sec] (mean)
...

Avec 16500 requêtes / seconde, nous sommes sur un trafic important.
iptraf mesure un Total rates: 198241,6 kbits/sec, soit 96 Mbps descendant et ascendant dans cet exemple. Les limites de la carte réseau 100Mbps sont atteintes.
Il vous sera donc impossible avec cette infrastructure de faire un test de charge supérieur à 16500 requêtes / seconde, par exemple.

L'outil iftop permet également d'observer le trafic sur l'interface réseau.

Gestion des erreurs sur la carte réseau

Enfin, l'outil netstat permet de contrôler l'absence d'erreur en réception RX-ERR et en transmission TX-ERR de paquets.
En ligne de commande :

$ netstat -i l
Table d'interfaces noyau
Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg
eth0       1500 0   3646213      0  18888 0        505051      0      0      0 BMRU
lo        16436 0  10466913      0      0 0      10466913      0      0      0 LRU

Les valeurs sont à zéro, la communication est donc saine.