5 points par GN⁺ 2024-07-29 | Aucun commentaire pour le moment. | Partager sur WhatsApp

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.

Aucun commentaire pour le moment.