Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

Chapitre 9. Configuration d'InfiniBand et des Réseaux RDMA

9.1. Comprendre les technologies InfiniBand et RDMA

InfiniBand désigne deux choses distinctes. D'une part, il s'agit d'un protocole de couche de liaison physique pour réseaux InfiniBand. Deuxièmement, cela se réfère à une API de programmation de niveau supérieur appelée l'API InfiniBand Verbs. L'API InfiniBand Verbs est une implémentation d'une technologie remote direct memory access (RDMA).
Les communications RDMA se distinguent des communications IP normales car elles contournent l'intervention du noyau dans le processus de communication et réduisent ainsi considérablement la surcharge de processeur qu'il faut normalement pour traiter les communications réseau. Dans un transfert de données IP typique, une application X sur une machine A enverra certaines données à une application Y sur un ordinateur B. Dans le cadre du transfert, le noyau de l'ordinateur B doit tout d'abord recevoir les données, décoder les en-têtes de paquets, déterminer que les données appartiennent bien à l'application Y, réveiller l'application Y, attendre que l'application Y effectue une lecture syscall dans le noyau, puis doit copier manuellement les données de l'espace mémoire interne du noyau propre dans la mémoire tampon fournie par application Y. Ce processus signifie que la majorité du trafic réseau doit être copié dans la mémoire bus principale du système au moins deux fois (une fois, quand l'adaptateur hôte utilise le DMA pour mettre les données dans la mémoire tampon de la mémoire fournie par le noyau, et à nouveau, quand le noyau déplace les données vers la mémoire tampon de l'application), et cela signifie aussi que l'ordinateur doit exécuter un certain nombre de changements de contexte pour basculer du contexte noyau au contexte d'application Y. Ces deux choses imposent des charges de CPU extrêmement élevées sur le système lorsque le trafic réseau circule à une cadence très élevée.
Le protocole RDMA permet à l'adaptateur d'hôte de la machine de savoir quand un paquet arrive sur le réseau, quelle application doit recevoir ce paquet, et où il doit aller dans l'espace mémoire de l'application. Au lieu d'envoyer le paquet au noyau pour qu'il soit traité, et pour qu'il soit ensuite copié dans la mémoire de l'application de l'utilisateur, il place le contenu du paquet directement dans le tampon de l'application sans qu'il y ait besoin d'une autre intervention. Cela réduit considérablement la charge des communications réseau à haute vitesse. Cependant, cela ne peut être accompli en utilisant l'API de Sockets Berkeley standard sur laquelle la plupart des applications réseau IP se reposent, donc il doit fournir sa propre API, l'API InfiniBand Verbs, et les applications doivent être déplacées vers cette API, avant de pouvoir utiliser la technologie RDMA directement.
Red Hat Enterprise Linux 7 prend en charge le matériel InfiniBand et l'API InfiniBand Verbs. Aussi, il existe deux technologies supplémentaires qui sont prises en charge et permettant à l'API InfiniBand Verbs d'être utilisé sur du matériel non-InfiniBand. Il s'agit d'iWARP (Internet Wide Area RDMA Protocol) et RCI/IBoE (RDMA via Converged Ethernet, plus tard renommé InfiniBand over Ethernet). Ces deux technologies ont une couche de liaison de réseau IP normale comme leur technologie sous-jacente, et donc la majorité de leur configuration est effectivement couverte dans le chapitre Chapitre 2, Configurer la Gestion des réseaux IP du présent document. Pour l'essentiel, une fois que leurs fonctionnalités réseau IP sont correctement configurées, leurs fonctionnalités RDMA sont automatiques et apparaîtront aussi longtemps que les pilotes qu'il faut seront installés. Les pilotes du noyau sont toujours inclus dans chaque noyau que Red Hat fournit ; cependant, les pilotes de l'espace utilisateur doivent être installés manuellement si le groupe de packages InfiniBand n'a pas été sélectionné lors de l'installation de machine.

Voici les packages espace-utilisateur qu'il faut :

iWARP
matériel Chelsiolibcxgb3 ou libcxgb4 selon la version du matériel
RoCE/IBoE
matériel Mellanoxlibmlx4 ou libmlx5, selon la version du matériel. De plus, modifiez les fichiers /etc/rdma/mlx4.conf selon les besoins, afin de définir les types de ports correctement pour l'utilisation RoCE/IBoE. Modifiez les fichiers /etc/modprobe.d/mlx4.conf pour configurer quelle priorité de paquet correspond au service « no-drop » sur les commutateurs Ethernet sur lesquels les cartes sont connectées.
Avec ces paquets de pilotes installés (en plus les paquets RDMA normaux généralement installés avec les installations InfiniBand), un utilisateur doit être en mesure d'utiliser la plupart des applications RDMA normales pour tester et voir le protocole de communication RDMA sur leurs adaptateurs. Cependant, tous les programmes inclus dans Red Hat Enterprise Linux 7 ne prennent pas tous en charge les périphériques iWARP ou RoCE/IBoE. C'est parce que le protocole de mise en place de connexion sur iWARP en particulier, est différent que c'est sur les liens réels de couche liaison InfiniBand. Si le programme en question utilise la bibliothèque de gestion de connexion librdmacm, il prendra en charge les différences entre iWARP et InfiniBand silencieusement et le programme devrait fonctionner. Si l'application essaie de faire sa propre gestion des connexions, alors, il doit prendre en charge spécifiquement iWARP, sinon cela ne fonctionnera pas.