<Précédent | Table des matières | Suivant>
5.1. Pré-requis
Ce package est actuellement compilé pour les besoins CPU les plus bas possibles. Ce qui nécessite toujours qu'au moins SSE3 soit pris en charge par le CPU.
La liste des cartes réseau prises en charge par DPDK en amont se trouve sur les cartes réseau prises en charge22. Mais beaucoup d'entre eux sont désactivés par défaut dans le projet en amont car ils ne sont pas encore dans un état stable. Le sous-ensemble de cartes réseau que DPDK a activé dans le package tel qu'il est disponible dans Ubuntu 16.04 est :
Intel
• 1000 XNUMX e23 (82540, 82545, 82546)
• e1000e24 (82571..82574, 82583, ICH8..ICH10, PCH..PCH2)
• igb25 (82575..82576, 82580, I210, I211, I350, I354, DH89xx)
• ixgbe26 (82598..82599, X540, X550)
• i40e27 (X710, XL710, X722)
• fm10k28 (FM10420)
Chelsea
• cxgbe29 (Terminaison 5)
Cisco
• énique30 (UCS Virtual Interface Card) Paravirtualisation
23 http://dpdk.org/doc/guides/nics/e1000em.html
24 http://dpdk.org/browse/dpdk/tree/drivers/net/e1000/
25 http://dpdk.org/browse/dpdk/tree/drivers/net/e1000/
26 http://dpdk.org/doc/guides/nics/ixgbe.html
27 http://dpdk.org/browse/dpdk/tree/drivers/net/i40e/
28 http://dpdk.org/doc/guides/nics/fm10k.html
29 http://dpdk.org/doc/guides/nics/cxgbe.html
30 http://dpdk.org/browse/dpdk/tree/drivers/net/enic
• virtio-net31 (UEMQ)
•vmxnet332
Autres
• af_paquet33 (Socket Linux AF_PACKET)
• anneau34 (Mémoire)
De plus, il active expérimentalement les deux pilotes PMD suivants car ils représentent des périphériques (virtuels) très accessibles aux utilisateurs finaux.
Paravirtualisation
• xenvirt35 (Xén)
Autres
• pcap36 (fichier ou pilote noyau)
Les cartes doivent être désaffectées de leur pilote de noyau et affectées à la place à uio_pci_generic de vfio-pci. uio_pci_generic est plus ancien et fonctionne généralement plus facilement.
Le nouveau vfio-pci nécessite que vous activiez les paramètres de noyau suivants pour activer iommu.
iommu=pt intel_iommu=on
En plus de vfio-pci, vous devez ensuite configurer et affecter les groupes iommu en conséquence.
Remarque : dans un environnement basé sur virtio, il suffit de "désaffecter" les périphériques du pilote du noyau. Sans cela, DPDK refusera d'utiliser le périphérique pour éviter les problèmes avec le noyau et le DPDK fonctionnant sur le périphérique en même temps. Étant donné que DPDK peut fonctionner directement sur les périphériques virtio, il n'est pas nécessaire d'affecter par exemple uio_pci_generic à ces périphériques.
La configuration manuelle et les vérifications d'état peuvent être effectuées via sysfs ou avec l'outil dpdk_nic_bind
dpdk_nic_bind --help
Usage:
------
dpdk_nic_bind [options] PÉRIPHÉRIQUE1 PÉRIPHÉRIQUE2 ....
où DEVICE1, DEVICE2 etc, sont spécifiés via la syntaxe PCI "domain:bus:slot.func" ou la syntaxe "bus:slot.func". Pour les périphériques liés aux pilotes du noyau Linux, ils peuvent
31 http://dpdk.org/doc/guides/nics/virtio.html
32 http://dpdk.org/doc/guides/nics/vmxnet3.html
33 http://dpdk.org/browse/dpdk/tree/drivers/net/af_packet
34 http://dpdk.org/doc/guides/nics/pcap_ring.html#rings-based-pmd
35 http://dpdk.org/doc/guides/xen/pkt_switch.html#xen-pmd-frontend-prerequisites
36 http://dpdk.org/doc/guides/nics/pcap_ring.html#libpcap-based-pmd
également désigné par le nom d'interface Linux, par exemple eth0, eth1, em0, em1, etc.
Options:
--help, --usage :
Afficher les informations d'utilisation et quitter
-s, --status :
Imprimez l'état actuel de toutes les interfaces réseau connues.
Pour chaque périphérique, il affiche le domaine PCI, le bus, l'emplacement et la fonction, ainsi qu'une description textuelle du périphérique. Selon que le périphérique est utilisé par un pilote de noyau, le pilote igb_uio ou aucun pilote, d'autres informations pertinentes seront affichées :
* le nom de l'interface Linux par exemple if=eth0
* le pilote utilisé, par exemple drv=igb_uio
* tout pilote approprié n'utilisant pas actuellement ce périphérique
par exemple unused=igb_uio
REMARQUE : si ce drapeau est passé avec une option de liaison/déconnexion, l'affichage de l'état se produira toujours après que les autres opérations aient eu lieu.
-b pilote, --bind=pilote :
Sélectionnez le pilote à utiliser ou "aucun" pour délier le périphérique
-u, --unbind :
Dissocier un périphérique (équivalent à "-b none")
--Obliger:
Par défaut, les périphériques utilisés par Linux - comme indiqué par la présence de routes dans la table de routage - ne peuvent pas être modifiés. L'utilisation de l'indicateur --force remplace ce comportement, permettant aux liens actifs d'être déliés de force.
AVERTISSEMENT : Cela peut entraîner une perte de connexion au réseau et doit être utilisé avec prudence.
Exemples :
---------
Pour afficher l'état actuel de l'appareil : dpdk_nic_bind --status
Pour lier eth1 au pilote actuel et passer à utiliser igb_uio dpdk_nic_bind --bind=igb_uio eth1
Pour dissocier 0000:01:00.0 de l'utilisation de n'importe quel pilote dpdk_nic_bind -u 0000:01:00.0
Pour lier 0000:02:00.0 et 0000:02:00.1 au pilote du noyau ixgbe dpdk_nic_bind -b ixgbe 02:00.0 02:00.