web-dev-qa-db-fra.com

Différence entre IPoIB et TCP sur Infiniband

Quelqu'un peut-il expliquer les concepts de IPoIB et TCP sur l'infinibande? Je comprends le concept global et les débits de données fournis par l'infinibande native, mais je ne comprends pas très bien comment TCP et IPoIB s'intègre. Pourquoi avez-vous besoin d'eux et que font-ils? Quelle est la différence lorsque quelqu'un dit que son réseau utilise IPoIB ou TCP avec infiniband? Lequel est le mieux? Je ne suis pas d'un solide fond de réseautage, il serait donc agréable de développer.

Merci de votre aide.

40
jitihsk

Les adaptateurs InfiniBand ("HCA") fournissent quelques fonctionnalités avancées qui peuvent être utilisées via l'interface de programmation native "verbes":

  1. Les transferts de données peuvent être lancés directement de l'espace utilisateur vers le matériel, en contournant le noyau et en évitant la surcharge d'un appel système.
  2. L'adaptateur peut gérer tout le protocole réseau consistant à décomposer un gros message (même plusieurs mégaoctets) en paquets, à générer/gérer des ACK, à retransmettre des paquets perdus, etc. sans utiliser de processeur sur l'émetteur ou le récepteur.

IPoIB (IP-over-InfiniBand) est un protocole qui définit comment envoyer des paquets IP sur IB; et par exemple Linux a un pilote "ib_ipoib" qui implémente ce protocole. Ce pilote crée une interface réseau pour chaque port InfiniBand du système, ce qui fait qu'un HCA se comporte comme une carte réseau ordinaire.

IPoIB n'utilise pas pleinement les capacités de HCA; le trafic réseau passe par la pile IP normale, ce qui signifie qu'un appel système est requis pour chaque message et que le CPU hôte doit gérer la décomposition des données en paquets, etc. Cependant, cela signifie que les applications qui utilisent des sockets IP normales fonctionneront par dessus le pleine vitesse de la liaison IB (bien que le processeur ne sera probablement pas en mesure d'exécuter la pile IP assez rapidement pour utiliser une liaison IB QDR 32 Gb/s).

Puisque IPoIB fournit une interface IP normale NIC, on peut exécuter des sockets TCP (ou UDP) par-dessus. TCP = un débit bien supérieur à 10 Gb/s est possible en utilisant des systèmes récents, mais cela brûlera une bonne quantité de CPU. À votre question, il n'y a pas vraiment de différence entre IPoIB et TCP avec InfiniBand - - ils font tous deux référence à l'utilisation de la pile IP standard par-dessus le matériel IB.

La vraie différence est entre l'utilisation d'IPoIB avec une application de sockets normale et l'utilisation d'InfiniBand natif avec une application qui a été codée directement sur l'interface des verbes IB natifs. L'application native obtiendra presque certainement un débit beaucoup plus élevé et une latence plus faible, tout en dépensant moins de CPU en réseau.

70
Roland