2017-02-20 3 views
1

En mode DPKD, le flux de données ETH_RSS_IPV4 n'est pas activé par défaut pour la carte réseau Intel XL710. Ainsi, lorsque vous souhaitez distribuer des paquets entre des lcores, vous devez sélectionner d'autres flux de données IPv4 pris en charge par XL710, à savoir ETH_RSS_FRAG_IPV4, ETH_RSS_NONFRAG_IPV4_TCP, ETH_RSS_NONFRAG_IPV4_UDP, ETH_RSS_NONFRAG_IPV4_SCTP et ETH_RSS_NONFRAG_IPV4_OTHER. Cependant, vous devrez faire face à un problème stupide lorsque vous traitez avec les paquets IP fragmentés. Si vous choisissez d'utiliser les options ETH_RSS_FRAG_IPV4 et ETH_RSS_NONFRAG_IPV4_TCP, certains paquets fragmentés d'une connexion tomberont dans une autre file d'attente, car ils n'ont pas de numéro de port L4. Si vous excluez la fonction ETH_RSS_NONFRAG_IPV4_TCP, la fonction de hachage ETH_RSS_FRAG_IPV4 ne sera pas appliquée aux paquets non fragmentés et ces paquets iront à la file d'attente 0. Toutes les autres combinaisons de fonctions de hachage ne fonctionneront pas. Alors, que devrions-nous faire?Comment configurer la fonction de hachage RSS dans XL710 pour recevoir le type de flux IPv4?

Répondre

3

Le comportement du XL710 n'est pas compatible avec les conventions de DPDK. Donc, vous devez travailler directement avec l'API proposée par le pilote i40e afin de configurer RSS pour ETH_RSS_IPV4. Comme il est mentionné dans le contrôleur Ethernet Intel® 710 série Spécification mise à jour page 18 (version janvier 2017):

Les fonctions qui nécessitent des filtres Hash (RSS) sur les paquets IPv4 doivent définir tous les types d'enregistrements IPv4 dans le PFQF_HENA/VFQF_HENA (CPTypes 31, 33 ... 36)

types de paquets pris en charge (CPgenre) sont mentionnés dans Intel® Ethernet Controller 710 Série 597 pages Fiche technique et 598 (version janv 2017). Vous pouvez voir qu'il n'y a pas de type de paquet défini pour IPv4.

Cependant, il existe une solution. L'idée est de modifier l'ensemble d'entrées pour tous les types de flux requis (ou types de paquets). Essayons avec l'outil testpmd qui est fourni par DPDK dans le dossier de l'application. Après avoir compilé dpdk et l'application, exécutez l'application testpmd:

./app/test-pmd/testpmd -c ff -n 2 -w 0a:00.0 -w 0a:00.1 -- -i --rxq=4 --txq=4 

Nous avons deux XL710 dans notre système. Avec les commandes suivantes, vous pouvez configurer le XL710 comme si vous vouliez prendre en charge le flux de données IPv4.

port config all rss all 
set_hash_input_set 0 ipv4-tcp src-ipv4 select 
set_hash_input_set 0 ipv4-tcp dst-ipv4 add 
set_hash_input_set 0 ipv4-udp src-ipv4 select 
set_hash_input_set 0 ipv4-udp dst-ipv4 add 
set_hash_input_set 1 ipv4-tcp src-ipv4 select 
set_hash_input_set 1 ipv4-tcp dst-ipv4 add 
set_hash_input_set 1 ipv4-udp src-ipv4 select 
set_hash_input_set 1 ipv4-udp dst-ipv4 add 
set_hash_global_config 0 default ipv4-frag enable 
set_hash_global_config 0 default ipv4-tcp enable 
set_hash_global_config 0 default ipv4-udp enable 
set_hash_global_config 1 default ipv4-frag enable 
set_hash_global_config 1 default ipv4-tcp enable 
set_hash_global_config 1 default ipv4-udp enable 

Il sélectionne l'entrée appropriée pour définir les types de flux TCP et UDP en supprimant la section du port L4. La commande set_hash_global_config active le hachage symétrique si vous en avez besoin. En modifiant l'ensemble d'entrée TCP, il se comporte exactement comme le type de flux Frag IPv4 et, par conséquent, tous les paquets appartenant à la même connexion passent au même résultat.

Notez que l'entrée par défaut pour Frag IPv4 et NonFIPv4, Autres est IP4-S et IP4-D. Donc, il n'a pas besoin d'être modifié. N'oubliez pas de modifier tous les autres jeux d'entrée IPv4 et leur qualité symétrique.

Vous pouvez trouver les fonctions API de ces commandes en examinant le code source de l'application testpmd.