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é inclu dans la partie monolithique du noyau soit il est chargeable 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.
Il existe une grande variété de contrôleurs réseau Ethernet. À chaque composant correspond un pilote logiciel spécifique. Qu'il s'agisse d'une carte additionnelle ou d'un composant intégré sur la carte mère, le contrôleur est toujours un périphérique connecté au bus PCI. En mode console et à partir de la connexion super-utilisateur, la commande lspci du paquet pciutils donne la liste des périphériques reliés au bus PCI. Voici quelques exemples caractéristiques.
Identification de deux contrôleurs de marque
Broadcom™ intégrés sur la carte mère d'un serveur
rackable Dell™. On remarque, au niveau des deux
dernières lignes d'informations sur les interfaces, que le module
correspondant au contrôleur BCM5704 est baptisé
tg3.
# lspci -v
<snip/>
15:02.0 Ethernet controller: Broadcom Corporation NetXtreme BCM5704 Gigabit Ethernet
Subsystem: Dell Unknown device 0170
Flags: bus master, 66MHz, medium devsel, latency 64, IRQ 64
Memory at df2f0000 (64-bit, non-prefetchable) [size=64K]
Expansion ROM at <ignored> [disabled]
Capabilities: [40] PCI-X non-bridge device
Capabilities: [48] Power Management version 2
Capabilities: [50] Vital Product Data <?>
Capabilities: [58] Message Signalled Interrupts: Mask- 64bit+ Queue=0/3 Enable-
Kernel driver in use: tg3
Kernel modules: tg3
15:02.1 Ethernet controller: Broadcom Corporation NetXtreme BCM5704 Gigabit Ethernet
Subsystem: Dell Unknown device 0170
Flags: bus master, 66MHz, medium devsel, latency 64, IRQ 65
Memory at df2e0000 (64-bit, non-prefetchable) [size=64K]
Expansion ROM at <ignored> [disabled]
Capabilities: [40] PCI-X non-bridge device
Capabilities: [48] Power Management version 2
Capabilities: [50] Vital Product Data <?>
Capabilities: [58] Message Signalled Interrupts: Mask- 64bit+ Queue=0/3 Enable-
Kernel driver in use: tg3
Kernel modules: tg3
<snip/>
Identification d'un contrôleur de marque
Intel™. Comme dans l'exemple précédent, on remarque
que les deux dernières lignes d'informations indiquent le nom du module
correspondant au contrôleur 82572EI :
e1000.
# lspci -v
<snip/>
0c:00.0 Ethernet controller: Intel Corporation 82572EI Gigabit Ethernet Controller (Copper)
Subsystem: Intel Corporation PRO/1000 PT Server Adapter
Flags: bus master, fast devsel, latency 0, IRQ 16
Memory at fc4e0000 (32-bit, non-prefetchable) [size=128K]
Memory at fc4c0000 (32-bit, non-prefetchable) [size=128K]
I/O ports at ece0 [size=32]
Capabilities: [c8] Power Management version 2
Capabilities: [d0] Message Signalled Interrupts: Mask- 64bit+ Queue=0/0 Enable-
Capabilities: [e0] Express Endpoint, MSI 00
Capabilities: [100] Advanced Error Reporting <?>
Capabilities: [140] Device Serial Number a9-9b-19-ff-ff-17-15-00
Kernel driver in use: e1000
Kernel modules: e1000
<snip/>
Comme précisé plus haut, les contrôleurs réseau utilisent des composants matériel. On retrouve donc les informations sur l'initialisation des interfaces réseau dans les messages relatifs au lancement du système d'exploitation. La commande historique dmesg (dump messages) permet d'afficher tous les messages systèmes à la console. Pour isoler les parties relatives aux interfaces réseau, on filtre cet affichage avec la commande grep en recherchant des mots clés particuliers : noms de modules, noms d'interfaces, noms de marques, etc.
Exemple de recherche basée sur le nom du module logiciel de pilotage de l'interface :
# dmesg |grep e1000 e1000: 0000:0c:00.0: e1000_probe: (PCI Express:2.5Gb/s:Width x1) 00:15:17:19:9b:a9 e1000: eth1: e1000_probe: Intel(R) PRO/1000 Network Connection
Exemple de recherche basée sur la marque du composant contrôleur réseau :
# dmesg |grep -i broadcom
Broadcom NetXtreme II Gigabit Ethernet Driver bnx2 v1.6.9 (December 8, 2007)
eth0: Broadcom NetXtreme II BCM5708 1000Base-T (B2) PCI-X 64-bit 133MHz found at \
mem f4000000, IRQ 16, node addr 00:1a:a0:01:f0:32
eth2: Broadcom NetXtreme II BCM5708 1000Base-T (B2) PCI-X 64-bit 133MHz found at \
mem f8000000, IRQ 16, node addr 00:1a:a0:01:f0:30
Avec un peu plus d'expérience, on peut naviguer dans les menus de configuration du noyau Linux et consulter le catalogue des interfaces réseau disponibles par catégories de liaisons. Pour les interfaces gigabit Ethernet, on obtient la liste suivante :
Avec une distribution GNU/Linux moderne, le chargement des modules de pilotage des interfaces réseau se fait automatiquement. Il s'agit justement d'un point fort du noyau Linux ; il ne charge en mémoire que les pilotes correspondant aux composants effectivement présents sur le système. Cette section présente les opérations manuelles de chargement et déchargement de pilote de contrôleur réseau.
Le chargement manuel d'un module s'effectue avec la commande modprobe et la validation du résultat avec les commandes dmesg et ifconfig. De plus, on peut vérifier la présence du pilote dans la liste des modules chargé avec la commande lsmod.
|
Avertissement |
|---|---|
|
Pour tester les manipulations ci-dessous à partir d'une configuration déjà établie, il faut :
Enfin, si le pilote de carte est chargé dans la partie monolithique du noyau, toute manipulation de module est impossible. |
En reprenant l'exemple du contrôleur de marque Intel™, on peut effectuer les manipulations suivantes :
Identification du module et relevé du nom de l'interface : eth1
# dmesg |grep e1000 e1000: 0000:0c:00.0: e1000_probe: (PCI Express:2.5Gb/s:Width x1) 00:15:17:19:9b:a9 e1000: eth2: e1000_probe: Intel(R) PRO/1000 Network Connection
Interface non configurée : sans indicateur UP et sans adresse IP.
# ifconfig eth1
eth2 Link encap:Ethernet HWaddr 00:15:17:19:9b:a9
BROADCAST MULTICAST MTU:1500 Metric:1
<snip/>
Déchargement du module de pilotage de l'interface.
# modprobe -rv e1000 rmmod /lib/modules/2.6.24.3/kernel/drivers/net/e1000/e1000.ko
Chargement du module de pilotage de l'interface.
# modprobe -v e1000 insmod /lib/modules/2.6.24.3/kernel/drivers/net/e1000/e1000.ko
Consultation des messages systèmes avec la commande dmesg.
ACPI: PCI Interrupt 0000:0c:00.0[A] -> GSI 16 (level, low) -> IRQ 16 PCI: Setting latency timer of device 0000:0c:00.0 to 64 e1000: 0000:0c:00.0: e1000_probe: (PCI Express:2.5Gb/s:Width x1) 00:15:17:19:9b:a9 e1000: eth2: e1000_probe: Intel(R) PRO/1000 Network Connection
Même avec une configuration correcte de l'interface, il est possible que les communications soient bloquées si le lien physique entre l'hôte et l'équipement réseau n'est pas actif. Sur les liaisons utilisant des câbles en paires torsadées cuivre, on peut visualiser l'état du lien à l'aide de la commande mii-tool.
# mii-tool -v eth0: negotiated 1000baseT-FD flow-control, link okproduct info: vendor 00:08:18, model 54 rev 6 basic mode: autonegotiation enabled basic status: autonegotiation complete, link ok capabilities: 1000baseT-FD 100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD
advertising: 1000baseT-FD 100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD flow-control link partner: 1000baseT-FD 100baseTx-FD 100baseTx-HD 10baseT-FD 10baseT-HD
![]()
|
Le lien entre l'interface |
|
|
Les débits possibles sur cette interface sont : 1000Mbps en mode Full-Duplex, 100Mbps en mode Full-Duplex, 100Mbps en mode Half-Duplex, 10Mbps en mode Full-Duplex et 10Mbps en mode Half-Duplex. |
|
|
Les débits offerts par l'équipement réseau sont identiques à ceux disponibles sur l'interface de l'hôte. |
Pour aller plus loin dans l'étude des caractéristiques techniques des réseaux locaux, il est conseillé de lire l'article Technologie Ethernet.
Vous êtes ici :