2. Identifier les ressources matérielles

Couche physique

Avant de pouvoir configurer une interface, il faut que le pilote de périphérique correspondant ait été chargé en mémoire. Comme une interface réseau est un dispositif matériel, c'est au niveau du noyau Linux que l'opération doit s'effectuer. Soit le pilote d'interface a été inclus dans la partie monolithique du noyau soit il est chargé en mémoire sous forme de module. C'est cette dernière solution qui est le plus souvent retenue. Un module peut être chargé ou déchargé à volonté sans avoir à redémarrer la machine. De plus, les fonctions de reconnaissance automatique des composants périphériques permettent de ne charger que les modules correspondant aux composants effectivement présents sur le système.

Comment identifier un périphérique Ethernet ?

Il existe une grande variété de contrôleurs réseau Ethernet. À chaque famille de composants correspond un pilote logiciel spécifique. Qu'il s'agisse d'une carte additionnelle ou d'un composant intégré sur carte mère, le contrôleur peut être connecté via différents bus. Les bus PCI et USB sont les plus fréquemment utilisés. Voici deux exemples :

Contrôleur Ethernet sur bus PCI

Sur une architecture de type PC, un composant Ethernet est la plupart du temps relié au bus PCI. La commande lspci du paquet pciutils donne la liste des périphériques ainsi que les modules du noyau Linux associés à ces périphériques.

$ lspci -v | grep -A8 Ethernet
00:19.0 Ethernet controller: Intel Corporation Ethernet Connection (3) I218-V (rev 03)
        Subsystem: Intel Corporation Ethernet Connection (3) I218-V
        Flags: bus master, fast devsel, latency 0, IRQ 43
        Memory at f7100000 (32-bit, non-prefetchable) [size=128K]
        Memory at f713b000 (32-bit, non-prefetchable) [size=4K]
        I/O ports at f080 [size=32]
        Capabilities: <access denied>
                Kernel driver in use: e1000e
                Kernel modules: e1000e

Le module du noyau Linux nommé e1000e est chargé en mémoire automatiquement lors de l'initialisation du système. Il est présent dans la liste donnée par la commande lsmod.

$ lsmod | grep e1000e
e1000e                278528  0
ptp                    20480  1 e1000e
Contrôleur Ethernet sur bus USB

Sur une architecture Raspberry Pi 3, le composant Ethernet intégré est relié au bus USB et c'est la commande lsusb qui permet d'obtenir l'identification du composant.

$lsusb | grep Ethernet | fmt -t -w80
Bus 001 Device 003: ID 0424:ec00 Standard Microsystems Corp. SMSC9512/9514
   Fast Ethernet Adapter

Dans le cas d'un système Raspberry Pi 3, le logiciel de pilotage de l'interface Ethernet est placé dans la partie monolithique du noyau. Ce logiciel n'apparaît donc pas dans la liste des modules. Il faut consulter les messages système du noyau pour trouver la trace de l'initialisation de l'interface Ethernet. On peut utiliser la commande dmesg dans ce but.

$ dmesg | grep Ethernet | fmt -t -w80
[    2.016771] smsc95xx 1-1.1:1.0 eth0: register 'smsc95xx' at
   usb-3f980000.usb-1.1, smsc95xx USB 2.0 Ethernet, b8:27:eb:d7:21:80
[    9.733711] Bluetooth: BNEP (Ethernet Emulation) ver 1.3

Pour résumer, les outils utiles pour l'identification des composants réseau et des modules logiciels associés sont : lspci, lsusb, dmesg et lsmod.

Comment visualiser l'état du lien réseau ?

Même avec une configuration correcte de l'interface, il est possible que les communications soient bloquées si le raccordement physique entre l'hôte et l'équipement réseau n'est pas actif. Sur les câbles en paires torsadées cuivre, on peut visualiser l'état du lien à l'aide de la commande ethtool fournie avec le paquet du même nom. En reprenant les deux exemples de systèmes ci-dessus, on obtient les informations suivantes.

Contrôleur Ethernet sur bus PCI

Voici un exemple de résultat obtenu avec une interface nommée eth0. Suivant la configuration matérielle du système sur lequel on lance la commande ethtool, il faut adapter le nom de l'interface Ethernet.

$ sudo ethtool eth0
Settings for eth0:
        Supported ports: [ TP ]
        Supported link modes:   10baseT/Half 10baseT/Full
                                100baseT/Half 100baseT/Full
                                1000baseT/Full 1
        Supported pause frame use: No
        Supports auto-negotiation: Yes
        Advertised link modes:  10baseT/Half 10baseT/Full
                                100baseT/Half 100baseT/Full
                                1000baseT/Full
        Advertised pause frame use: No
        Advertised auto-negotiation: Yes
        Speed: 1000Mb/s 2
        Duplex: Full
        Port: Twisted Pair 3
        PHYAD: 1
        Transceiver: internal
        Auto-negotiation: on 4
        MDI-X: on (auto)
        Supports Wake-on: pumbg
        Wake-on: g
        Current message level: 0x00000007 (7)
                               drv probe link
        Link detected: yes

1

Cette liste correspond aux débits possibles sur cette interface.

2

Le lien entre l'interface eth0 et l'équipement réseau est actif et le débit négocié est le Gbps en mode Full-Duplex.

3

Le câble connecté à cette interface est en paire cuivre torsadée ou twisted pair.

4

Les résultats précédents ont été obtenus par auto négociation entre le contrôleur réseau et le commutateur auquel l'interface Ethernet est raccordée.

Contrôleur Ethernet sur bus USB
$ sudo ethtool eth0
Settings for eth0:
        Supported ports: [ TP MII ]
        Supported link modes:   10baseT/Half 10baseT/Full
                                100baseT/Half 100baseT/Full
        Supported pause frame use: No
        Supports auto-negotiation: Yes
        Advertised link modes:  10baseT/Half 10baseT/Full
                                100baseT/Half 100baseT/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: 1
        Transceiver: internal
        Auto-negotiation: on
        Supports Wake-on: pumbag
        Wake-on: d
        Current message level: 0x00000007 (7)
                               drv probe link
        Link detected: yes

Relativement au contrôleur Ethernet sur bus PCI, le débit passe à 100Mbps.

Pour aller plus loin dans l'étude des caractéristiques techniques des réseaux locaux Ethernet, il est conseillé de lire l'article Technologie Ethernet.