Pile réseau Linux
Réception des paquets réseau sous Linux
- Sur l’équipement réseau, la NIC (Network Interface Card) génère une IRQ (Interrupt Request) pour signaler l’arrivée d’un paquet
- Le gestionnaire d’IRQ s’exécute avec une priorité très élevée et bloque la génération d’IRQ supplémentaires
- Le système softIRQ est utilisé pour traiter le travail en dehors du contexte IRQ du pilote de périphérique
- Un thread noyau softIRQ est créé, et la structure
softnet_data est créée
- La NIC utilise le DMA (Direct Memory Access) pour que les données réseau soient écrites dans le ring buffer en RAM
- La boucle de polling NAPI softIRQ démarre
- La boucle
net_rx_action vérifie la structure NAPI et transmet les paquets à napi_gro_receive
- Les paquets sont transmis à la pile de protocoles via
netif_receive_skb
Transmission réseau dans le noyau Linux
- Lorsqu’une application envoie un message, l’en-tête TCP est construit, puis le gestionnaire L3 est appelé
- Le paquet est fragmenté, puis la fonction de transmission L2 est appelée
- Le pilote place le paquet en file d’attente dans le ring buffer
tx
- La NIC récupère le paquet depuis la RAM et l’envoie
- Une fois la transmission terminée, la NIC déclenche une IRQ matérielle
- Le pilote traite cette IRQ et planifie le système de polling NAPI
Optimisation des performances réseau
HOWTO rapide
/proc/net/softnet_stat & /proc/net/sockstat
- Le fichier
/proc/net/softnet_stat fournit des statistiques pour chaque cœur CPU
- Le fichier
/proc/net/sockstat fournit des statistiques d’utilisation des sockets
ss
ss est un utilitaire d’inspection des statistiques des sockets, qui permet de vérifier l’utilisation mémoire
netstat
netstat est un utilitaire en ligne de commande qui fournit des statistiques sur les connexions réseau et la pile de protocoles
sysctl
- La commande
sysctl permet de modifier les paramètres système/réseau
- Le fichier
/etc/sysctl.conf peut être édité pour changer ces valeurs de manière permanente
Ring buffer de la NIC
- Le ring buffer de la NIC est un buffer FIFO de taille fixe, situé en RAM
- Il peut être nécessaire d’augmenter cette file d’attente pour mieux absorber les connexions en rafale
Résumé de GN⁺
- Ce guide explique en détail le fonctionnement de la pile réseau Linux et présente différentes méthodes pour optimiser les performances réseau
- Il est important de comprendre le rôle des IRQ et des softIRQ dans les processus de réception et de transmission des paquets réseau
- La commande
sysctl permet d’ajuster les paramètres système, et la taille du ring buffer de la NIC peut être modifiée pour améliorer les performances
- L’optimisation des performances réseau peut varier selon les besoins spécifiques du système, et il est nécessaire d’expérimenter différents réglages
Aucun commentaire pour le moment.