Maison  >  Article  >  développement back-end  >  Introduction détaillée de la technologie multi-file d'attente de la carte réseau et de la fonction RSS

Introduction détaillée de la technologie multi-file d'attente de la carte réseau et de la fonction RSS

Y2J
Y2Joriginal
2017-04-25 09:23:416454parcourir

La carte réseau multi-files d'attente est une technologie qui a été utilisée à l'origine pour résoudre les problèmes de qualité de service (qualité de service) des E/S du réseau. Plus tard, à mesure que la bande passante des E/S du réseau continuait d'augmenter, les processeurs monocœur ne pouvaient pas répondre pleinement aux besoins de. cartes réseau. Grâce à la prise en charge des pilotes de carte réseau multi-files d'attente, chaque file d'attente est liée à différents cœurs via des interruptions pour répondre aux besoins de la carte réseau.

Les plus courants incluent les 82575, 82576 d'Intel, les 57711 de Boardcom, etc. En prenant comme exemple la carte réseau Intel 82575 qui est couramment utilisée dans les serveurs de l'entreprise, nous analyserons la mise en œuvre matérielle de la carte réseau multi-files d'attente. et le support du logiciel du noyau Linux.

1. Implémentation matérielle de la carte réseau multi-files d'attente

La figure 1.1 est le schéma logique matériel Intel 82575, avec quatre files d'attente matérielles. Lorsqu'un paquet est reçu, un flux est toujours reçu dans la même file d'attente en hachant les quadruples SIP, Sport, DIP et Dport dans l'en-tête du paquet. Dans le même temps, l'interruption liée à la file d'attente est déclenchée.

Figure 1.1 Schéma logique matériel 82575

2. Qu'est-ce que RSS

RSS (Receive Side Scaling) est une méthode qui peut mettre en réseau technologie de pilote de carte qui permet une distribution efficace des messages reçus entre plusieurs processeurs sous le système de processeur.

  • La carte réseau analyse le message reçu et obtient les informations sur l'adresse IP, le protocole et le quintuple du port

  • La carte réseau transmet le HASH configuré. La fonction calcule la valeur HASH sur la base des informations à cinq tuples et peut également calculer la valeur HASH sur la base des informations à deux, trois ou quatre tuples.

  • Prenez les chiffres inférieurs de la valeur HASH (cette carte réseau spécifique peut être différente) comme index de RETA (table de redirection)

  • Selon le stockage dans RETA La valeur est distribuée au CPU correspondant

La figure suivante décrit le flux de traitement complet :

Basé sur la technologie RSS, le programme peut distribuer les données entre plusieurs processeurs via le flux matériel et l'équilibrage de charge dynamique peuvent être obtenus en modifiant RETA.

3. Configurer RSS dans DPDK

DPDK prend en charge la définition de valeurs de hachage statiques et la configuration de RETA. Cependant, RSS dans DPDK est basé sur les ports et les paquets sont distribués en fonction de la file d'attente de réception du port. Par exemple, si nous configurons 3 files d'attente de réception (0,1,2) sur un port et activons RSS, alors cela ressemble à ceci :

{0,1,2,0,1,2,0 . ........>

Les applications exécutées sur différents processeurs reçoivent des messages de différentes files d'attente de réception, obtenant ainsi l'effet de distribution de messages.

Activez la fonction RSS dans DPDK en définissant le champ rte_eth_conf dans mq_mode, rx_mode.mq_mode = ETH_MQ_RX_RSS.

Lorsque la fonction RSS est activée, la valeur de hachage calculée par RSS sera stockée dans le rte_pktmbuf correspondant au message, accessible via pktmbuf.hash.rss. Cette valeur peut être utilisée directement dans le traitement ultérieur des paquets sans recalculer la valeur de hachage, comme l'avance rapide, l'identification des flux de paquets, etc.

RETA est configurable au moment de l'exécution, de sorte que l'application puisse modifier dynamiquement la file d'attente de réception correspondant au CPU, ajustant ainsi dynamiquement la distribution des messages. Spécifiquement configuré via le pilote du module PMD, tel que ixgbe_dev_rss_reta_update et ixgbe_dev_rss_reta_query.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn