# Bus InfiniBand

L'infiniBand est un bus d'ordinateur à haut-débit. Il est destiné aussi bien aux communications internes qu'externes.

## Historique

L'infiniBand est le fruit de la fusion de deux technologies concurrentes : Future I/O, développée par Compaq, IBM, et Hewlett-Packard, avec Next Generation I/O (ngio), développée par Intel, Microsoft, et Sun Microsystems. Pendant un bref temps avant l'adoption de son nom définitif, il fut aussi nommé System I/O. Intel s'est depuis ré-investi dans une technologie quasiment alternative, le bus PCI Express, exprimant ses doutes sur le futur de l'infiniBand.

## Description

L'infiniBand utilise un bus bi-directionnel à faible coût qui se place au même niveau que Ethernet mais a été conçu pour la haute performance. Il bénéficie d'une latence faible (environ 1 microseconde) et de débits de plusieurs dizaines de Gbit/s. L'infiniBand utilise une technologie permettant à plusieurs périphériques d'accéder en même temps au réseau. Les données sont transmises sous la forme de paquets, qui, rassemblés, forment des messages.
L'infiniBand est très utilisé dans le monde du HPC (High Performance Computing) sous forme de cartes PCI-X ou PCI Express nommées HCA (Host Channel Adapter) fonctionnant à 10 Gbit/s (SDR, Single Data Rate), 20 Gbit/s (DDR, Double Data Rate), 40 Gbit/s (QDR, Quad Data Rate), 56 Gbit/s (FDR, Fourteen Data Rate), 100 Gbit/s (EDR, Eighteen DataRate) ou 200 Gbit/s (HDR, High Data Rate). Ce réseau spécialisé nécessite aussi l'utilisation de switchs (ou commutateurs) InfiniBand ainsi que de câbles cuivre de types CX4 ou QSFP, ou Fibre pour les longues distances.
Le protocole InfiniBand permet d'utiliser ces cartes de façon native en faisant usage de l'interface de programmation VERBS qui permet des écritures ou lectures à distance (RDMA) à travers des connexions entre Queue-Pair ouvertes par les différents processus. Il est également utilisable avec des surcouches logicielles :
* IPoIB (IP sur InfiniBand) qui présente une couche IP au-dessus de l'infiniband.
* SDP (Sockets Direct Protocol) qui présente une couche socket au-dessus de l'infiniband avec transferts zéro-copie par RDMA.
* SRP (SCSI RDMA Protocol) qui permet d'encapsuler des trames SCSI à travers l'infiniband. Certains constructeurs proposent des baies de stockage reliées en InfiniBand plutôt qu'en Fibre Channel.
Ces surcouches offrent des performances inférieures au protocole natif, mais sont plus faciles à utiliser car elles ne nécessitent pas le redéveloppement des applications pour utiliser le réseau InfiniBand.
Dans le monde du HPC les bibliothèques MPI (Message Passing Interface) utilisent en général la couche native VERBS directement pour offrir les meilleures performances possibles. Mais la complexité des VERBS et leur adaptation imparfaite aux cartes InfiniBand de dernière génération a conduit le constructeur Mellanox a réimplementer MPI sur une autre interface, MXM (MellanoX Messaging). Certains concurrents de Mellanox dans le monde InfiniBand ont également développé des interfaces spécifiques à leur matériel. En particulier, Qlogic recommandait d'utiliser son interface spécifique PSM (Performance Scaled Messages) pour ses cartes TrueScale. Après le rachat de cette technologie par Intel, c'est désormais PSM2 qui est recommandé pour les cartes OmniPath (qui ont remplacé TrueScale). En conséquence, les VERBS sont de moins en moins utilisés.
À l'origine, chaque constructeur de matériel InfiniBand proposait son propre pilote. À l'heure actuelle, tous les constructeurs utilisent les pilotes OpenFabrics (présent de base dans les noyaux Linux depuis la version 2.6.11 en 2005 et dans la majorité des distributions GNU/Linux), qui supportent toutes les cartes InfiniBand. Cependant, Mellanox continue de distribuer sa propre version de la suite logicielle OpenFabrics (MOFED, Mellanox OpenFabrics Enterprise Edition) avec des pilotes un peu plus optimisés que ceux disponibles dans les distributions GNU/Linux.