Infiniband@home : votre homelab à 20Gbps

MAJ 07/03/2014 : Le beta test du package ib-opensm-3.3.15 pour ESXi 5.5 est terminé et Andreas Peetz nous a fait l’honneur de le publier sur son vibdepot. Toutes les informations d’usage sont disponibles sur son wiki mais nous reprécisons que ce package n’est pas supporté pour VSAN à cause du timeout trop important en cas de (ré)élection du master opensm.

MAJ 30/01/2014 : Suite à d’autres problèmes de stabilité avec ESXi 5.5, nous retirons la version x64. Une nouvelle version est actuellement en beta test, n’hésitez pas à nous contacter pour la tester.

MAJ 26/11/2013 : Suite à des problèmes de stabilité, nous avons compilé la version 3.3.15 en 64bit et remis à disposition la 3.3.15 32bit en lieu et place de la version 3.3.16

MAJ 22/10/2013 : Nouvelle vib en version 3.3.16-64 qui apporte le support d’ESXi 5.5 (les binaires et librairies sont maintenant en 64bit) et rétrocompatible en 5.1 (probablement 5.0 aussi).

MAJ 02/10/2013 : Mise à jour du vib avec la version 3.3.16 d’opensm. Aucune version compatible avec ESXi 5.5 pour le moment.

Suite à notre post sur l’EZ Compact 6 il y a quelques mois, nous avons été victimes de “l’effet SSD” qui donne l’impression que n’importe quelle grappe de disques SAS 15K en stripping est une grosse brouette. En effet, après avoir goutté à un agrégea de SSD vous devenez immédiatement addict aux latences extrêmement faibles ainsi qu’aux débits improbables qui vous font douter de la bande passante théorique du PCIe. Mais pour en profiter au delà du serveur dans lequel se trouve vos précieux, il faut un protocole de transport plus rapide et performant que du simple GbE. Suite à quelques recherches, le choix du Fibre Channel en mode FC-P2P ou FC-AL s’avérait être le plus pratique (pas besoin de switch, seulement des cartes HBA et des fibres pour les relier) et peu coûteux compte tenu de l’immense marché de l’occasion.

Un petit tour sur eBay et nous voila avec notre FC@home qui nous a permis de faire des tests intéressants comme ceux pour notre post sur le MRU ranking mais aussi de profiter pleinement des performances des SSD. Le seul “inconvénient” du FC est de ne transporter que du block et donc de ne permettre qu’un accès à des LUN. Sur une petite baie de stockage ZFS c’est un réel problème car cela oblige à prendre certaines précautions concernant la taille des LUN présentées pour profiter des snapshots et de la compression. Il y a donc de fortes chances que vous soyez dans l’obligation de réserver une quantité d’espace non négligeable pour éviter de saturer le zpool.

Nous partons alors en quête de cartes réseau 10GbE avec lesquelles nous pourrions faire du NFS mais aussi des vmotion à des vitesses indécentes. Malheureusement ce matériel reste encore très cher pour un particulier à l’heure actuelle y compris d’occasion. Après quelques recherches, nous avons trouvé une solution très abordable (en occasion toujours) permettant de faire du block ainsi que du réseau à des débits hallucinants et avec des temps de latence extrêmement faibles : l’infiniband !

L’infiniband est un type de réseau très particulier permettant à la base de transporter des messages :

The basic idea behind InfiniBand is simple; it provides applications with an easy-to-use messaging service. This service can be used to communicate with other applications or processes or to access storage.

Grace à des ULP (Upper Layers Protocol) il est possible de transporter différents protocoles tels que du SCSI, de l’IP, du NFS ou du Lustre et même de faire du RDMA pour certains comme dans le cas du SRP ou du GPUDirect. Au fil de nos recherches nous avons pu remarquer que malgré des débuts difficiles, l’architecture infiniband semble s’imposer petit à petit dans de nombreux domaines pour des raisons de flexibilité, de performances et de coûts.

Pour en revenir à notre homelab, nous avons soigneusement cherché un modèle de carte dual port capable de fonctionner sur ESXi 5 ainsi que Nexenta 3 et c’est sur le forum de nexenta que nous avons trouvé la bonne affaire : HP 448397-B21 (chip Mellanox ConnectX). A 50€ sur ebay nous en avons donc commandé 3 ainsi que les câbles CX4 pour les connecter (infiniband supporte le back-to-back à l’instar du FC et de l’ethernet).

Tout semblait “se dérouler sans accrocs” mais alors que nous relisions le User Manual des drivers Mellanox en attendant que les cartes nous soient livrées, un paragraphe allait radicalement changer la nature de notre aventure :

The driver package requires InfiniBand Subnet Manager (SM) to run on the subnet. The driver package does not include an SM.
If your fabric does not include a managed switch/gateway, an SM application should be installed on at least one non-ESXi Server machine in the subnet. You can download an InfiniBand SM such as OpenSM from www.openfabrics.org under the Downloads section.

En effet, contrairement à FC ou ethernet, les cartes infiniband (HCA) ne suffisent pas à constituer un réseau fonctionnel (et sans SM sur le subnet, les ports IPoIB sont down), il faut un Subnet Manager pour gérer la topologie du réseau infiniband et ce composant n’existe pas (publiquement) pour ESXi, pas jusqu’à maintenant en tout cas…

Un SM étant nécessaire pour chaque subnet, notre design en “triangle” (2 ESXi + 1 Nexenta) nécessitait forcement un SM coté ESXi pour gérer le subnet entre les 2 ESXi (pour le vmotion) et un SM pour chacun des liens ESXi/Nexenta (pour le SCSI et le NFS). Et dans un excès d’optimisme, nous voila parti à essayer de compiler OpenSM pour ESXi et en faire un vib :)

Nous avons commencé grâce au post de William Lam basé sur le post de Stjepan Groš et avons réussi à compiler une version fonctionnelle après avoir résolu des problèmes de dépendances (libibmad, libibumad et libwrap) et de chemins dans les sources (umad.h). Nous avons ensuite du faire face à un problème de cpu loop (osm_vendor_ibumad.c) que nous n’aurions pu résoudre sans l’aide précieuse de Hal Rosenstock, de chez Mellanox (très actif sur la mailing list d’openfabrics). Finalement, après avoir mijoté un script d’init, nous avions une version capable de démarrer un SM par subnet, supportant un fichier de partition (topologie du réseau) et capable de réassigner les LIDS (équivalent des adresses MAC ou des WWN) en cas de besoin. Yatta !

Nous n’avons eu qu’à utiliser l’excellent ESXi Community Packaging Tools d’Andreas Peetz (autrement plus abouti que VIB Author) pour packager un joli vib à déployer avec esxcli (VUM ne supportant pas l’indispensable –no-sig-check) et hotplug ! De plus, OpenSM est capable de supporter plusieurs instances sur le même subnet où une seule sera MASTER et les autres STANDBY.

Voici donc le seul et unique vib qui vous permettra de faire du back-to-back entre 2 ESXi ou entre ESXi et n’importe quoi d’autre :

ib-opensm x86

ib-opensm x64

Un petit tour par l’onglet configuration d’ESXi :

Et enfin, quelques infos utiles :

Passons aux gros chiffres. On commence par une vague de vmotion :

On continue avec un test d’IOPS avec VMware I/O Analyzer (appliance iometer) :

Et on termine par un test de throughput, toujours avec I/O Analyzer :

Il ne vous reste plus qu’à sécher vos larmes et aller vous faire plaisir sur eBay :)

Ces tests ont été réalisés sur 1 seul port 10Gbps DDR (soit 20Gbps) alors imaginez les résultats avec des cartes 56Gbps

PS : Un grand merci à vmdude pour son aide et à tous les autres pour nous avoir supporté pendant notre période “infiniband cay le bien” :)

Tags: , , , , ,

62 Responses to “Infiniband@home : votre homelab à 20Gbps”

  1. Encore une tuerie!
    Vous devriez faire du R&D les gars ;)

    Post a traduire en Anglais rapidement ;)

  2. Pour info vous pouvez trouver les HCA sous la référence HP 452372-001
    ce sont les mêmes cartes

    j’avais payé les miennes ~30 euros pièce

  3. Bonsoir,

    Que signifie l’expression “back-to-back” ?

    merci

  4. @tuxtof effectivement c’est l’autre ref HP apparement
    @dcddtc back-to-back c’est une connexion directe entre 2 adapter comme un cable croisé entre 2 cartes ethernet par exemple

  5. Top ! Chouette article !
    Je pensais changer mes ESXi à la maison fin d’année, j’opterai ptet pour de l’IB :)
    Faudra juste que je check si les cartes rentrent dans les mini-boitiers que j’envisage :)

  6. @Romain les cartes sont compatible low-profile, il faut les bons brackets par contre.

  7. Excellent article !
    J’avais repéré l’IB il y a quelques années, mais pas de là à me le monter en lab.
    Avec ce post, j’ai trouvé mon bonheur :)

    merci à vous !

  8. Merci, et n’hésitez pas à nous faire par de vos retours !

  9. Excellent article.
    Pensez vous qu’il est possible d’utiliser l’IB avec 2 carte biports pour une petite archi de test avec 2 têtes nexenta et 2 ESXi?

    Tout cela pour du NFS + VMotion et HA Nexenta

    Merci d’avance.

  10. Merci.
    Oui sans problème, le daemon démarrera autant d’opensm qu’il y a de port IB sur l’ESXi.
    Si besoin je pourrai ajouter des features au vib.
    N’hésitez pas à nous faire partager les résultats de vos tests :)

  11. hello

    on peut avoir un peu plus d’info sur la conf des benchs
    le volume disque est en SRP ?
    type de disque /nombre ?

    merci d’avance

  12. Salut,
    un zvol sur 4 SSD highend en striping dans un HP N40L monté en SRP. Cette config nous a également permis de vérifier que le RDMA permet de très bonnes perfs avec un petit cpu comme celui du N40L.

  13. Hello,

    la question du soir quel version de firmware pour les cartes HCA ??

    Bye

  14. version 2.6.0

  15. Attention après avoir fait pas mal de test je vous confirme qu’il y a un problème avec les firmwares récents ( 2.8.0 et 2.9.100 ) et le driver vSPhere MLNX-OFED-ESX-1.8.1.0.

    Tout fonctionne correctement en 2.6.0 et 2.7.0 au dessus plus possible d’initialiser un subnet on obtient les erreurs suivantes dan sle fichier log d’OpenSM

    log_send_error: ERR 5411: DR SMP Send completed with error (IB_TIMEOUT) — dropping Method 0×1, Attr 0×11, TID 0×124a
    Received SMP on a 1 hop path: Initial path = 0,2, Return path = 0,0Jun 23 06:32:14 105273 [6D750B90] 0×01 -> sm_mad_ctrl_send_err_cb: ERR 3113: MAD completed in error (IB_TIMEOUT): SubnGet(NodeInfo), attr_mod 0×0, TID 0×124a
    sm_mad_ctrl_send_err_cb: ERR 3120 Timeout while getting attribute 0×11 (NodeInfo); Possible mis-set mkey?

    Tout les tests on été fait avec les mêmes cartes HP 448397-B21, je ne sais pas si le problème avec toutes les cartes ConnectX

  16. Très bon article.

    Entre la HP 448397-B21 et la HP 452372-001 il y a sur la dernière une puce en plus, on voit la place disponible sur ta carte au dessus du connecteur PCIe. Cet puce noir et doublé sur la 452372-001, quand a savoir l’utilité…

  17. Bien vu, le chip est un ST 25p16V6G mais je ne trouve pas grand chose…

  18. Même chip, mais idem aucune infos dessus. Les miennes sont des REV X1.

    Détail sans importance le bracket est en inox sur la HP 452372-001 qui est moins chère ????

  19. J’adore l’idée. Le seul dommage est (si on reste dans la fourchette de prix très bas) la config en triangle seulement.

    Mais qui sais, si le prix des switch IB d’occase baissent aussi…

    En tout cas, bravo pour l’exploit

  20. Merci Vladan.
    Ya quelques bonnes okaz sur ebay : http://www.ebay.com/itm/330949168323 (89$ pour un switch 8 port SDR) mais sinon rien n’empêche de mettre plusieurs cartes dans les ESXi :)

  21. [...] most Home Labs are not 10GB (cost is still pretty high) or more (I’m not geek enough to put Infiniband@home), and with the current performance level of SSDs or even HDDs, depending the operations, Network [...]

  22. [...] to work with ESXi 5.1 and I now have it up and running. Looking good so far. Details are available here. The site is French but google translate works very well. An update to what is listed on that [...]

  23. [...] did I see a french blogger Raphael Schitz (@hypervisor_fr) write what we all wanted to have… InfiniBand@home votre homelab a 20Gbps (In French). Vladan Seget (@Vladan) has followed up on the topic and has also a great article [...]

  24. [...] on vSphere 5.0 and vSphere 5.1. This vSphere installable VIB can be found in his blog article  InfiniBand@home votre homelab a 20Gbps (In [...]

  25. Hi, I was wondering if an updated version of this vib has been done for vsphere 5.5.

  26. Hi Al, i was expecting the vib would work on 5.5 out of the box. Did you try and got an error or something?

  27. Hi Nitro,

    Out of the box the driver included with esx 5.5 for the connectx card is now a newer version (1.9 if I remember correctly). Esx 5.5 now includes the required drivers for the networking piece of these cards.

    If I downgrade the drivers to 1.6 and 1.8, I can install the opensm vib, but the link is never established. I have used my current setup in the past so I know there is no issue with the cards/ cables. I know the info provided is very lacking, I will try to update when I get home and provide all the necessary details.

    Thanks
    -Al

  28. ok so try install the vib with the -force parameter until i publish a new vib ?

  29. Alexandru Covaliov Says:
    October 31st, 2013 at 14:01

    Hi,
    I’m still curious how did you fit a Dual-Port NIC, an Infiniband card and RAID controller in one HP N40L? From your last post “EZ Compact 6 there a few months” you add an extra cage to your N40L. So you need an additional RAID controller. But how did you add dual port nic and Infiniband?
    I don’t have money to build another server but I want to expand my HP N36L :)
    Thanks.

  30. I replaced the LSI card with the infinband card. i’m not sure to understand about the dual-port nic?

  31. Matt Mabis Says:
    December 3rd, 2013 at 21:39

    Hey there,

    I was wondering with your rebuild of the 3.3.15-64 driver for “Stability issues” is that the recommended driver now for ESXI 5.5? or should we stay at 3.3.16-64 for ESXi 5.5?

    I am having some issues with the 3.3.16-64 where the interfaces go up and down randomly (Two directly connected hosts) i tried the 3.3.15-64 and got multicast errors a lot.. that did the same thing (interfaces went up and down)

  32. @Matt, the 3.3.15 vib is the recommended package for all versions (x32 for 5.0/5.1 and x64 for 5.5) but i’d be happy to help, please send me an email via the contact page of the blog.

  33. I’m sure there are better solutions, but I on embedded esxi 5.1 the /scratch/opensm/{GUID}/partitions.conf does not remain persistent beyond reboots. To solve this I echo’ed the contents from /etc/rc.local.d/local.sh:
    example:
    /bin/echo “Default=0×7fff,ipoib,mtu=5:ALL=full;” > /scratch/opensm/0×001e0bffff4c6925/partitions.conf
    /bin/echo “Default=0×7fff,ipoib,mtu=5:ALL=full;” > /scratch/opensm/0×001e0bffff4c6926/partitions.conf

    https://gist.github.com/rythornton/7865360

    Great work, and thanks.

  34. @ryan actually, i would better recommend redirect your /scratch on a persistent partition :)
    Thanks for your feeback!

  35. Great work on getting IB working… this is just what i’ve been waiting for…

    I’m running ESXi 5.5 in a two host back-to-back configuration using one port at the moment.

    I’ve followed the instructions to get IB working…. my issue seems to be setting the MTU….
    I’ve run the command to set it to 4092 (esxcli system module paramters set -m=mlx4_core -p=mtu_4k=1) and then set it to 4092 on the vmkernel port…. when I do this I am unable to ping between hosts. If I set it to 1500 on the vmkernel port then it seems to work.

  36. Hi Steve, did you set mtu=5 in partitions.conf for opensm?

  37. Bonjour,

    J’ai quelque chose de problématique sous mon esxi 5.1.
    J’ai installé les drivers 1.8.2, j’ai installé le petit vib qui contient opensm.
    Je vois bien tous les modules des drivers sont bien installés, 9 de tête.
    Mais pas moyen de faire remonter la carte en tant que storage adapter ou network adapter.
    Si je fais un coup de esxcli hardware pci list, je la voie bien.
    Ai-je oublié quelque chose?

    Merci

  38. Bonjour, ya quelque chose dans /proc/infiniband/ ?
    opensm ne fait rien de plus que jouer le rôle de subnet manager IB mais si la carte n’est pas reconnue, cela ne servira à rien.

  39. Bonjour,

    C’est vraiment super ce que vous avez fait. J’essai de répéter moi-même l’expérience, mais je n’y arrive pas. J’espérais trouver quelques indication ou indices pour la suite des choses.

    J’ai deux serveurs ESXi 5.1 ainsi qu’un serveur Solaris express 11. J’ai également installé votre vib sur les deux serveurs esx.

    J’ai réussi à faire fonctionner les deux serveurs ESX sans trop de problème. Mon problème est de connecter le serveur solaris avec les ESX. Le problème réside surement dans le fait que je ne saisi pas bien le fonctionnement d’infiniband. Si quelqu’un aurait un lien vers un “how-to”, ou de la documentation pertinente, j’apprécierais. J’ai lu beaucoup de documentation sur le site d’oracle, mais je ne comprend pas bien où commencer.

    Merci pour votre aide pour pour l’excellent projet.
    Raphaël

  40. Bonjour Raphael, coté solaris il y a toutes les infos dans ce pdf normallement http://files.hypervisor.fr/doc/Basic_COMSTAR_Quick-Start_Guide_for_SRP.pdf
    Quel est votre soucis exactement ?

  41. Infini_User Says:
    January 11th, 2014 at 7:43

    Hi there,

    I have some problems which I’ve detailed (quite extensively) in a post over here:

    http://community.mellanox.com/thread/1513

    Could I please get you to cast your eye over it and give me some feedback please?

    It’s in relation to running SRP between an ESXi 5.5 and Oracle Solaris 11.1 server as well as verification using the “ibping” command.

    Thanks.

  42. Hi, the current package is not stable in 5.5 so please drop me an email so i can send you a preview of the future version.

  43. Bonjour à vous,

    Merci pour ce how to !

    j’ai une petite question:

    j’essaye de faire de l’IPoIB entre deux 2008R2.
    les cartes sont reconnues, opensm est installé sur une des deux machines pas de soucis. sauf que je ne peux pas pinguer entre les deux, les paquets partent mais ne reviennent pas.

    je pense que c’est lié au opensm.conf que je dois mal renseigné.

    Comment avez-vous procédé?

    je tatonne depuis quasi une semaine la dessus et je commence à être frustré ^^

    merci ;)

  44. Entre 2 windows je n’ai jamais fait mais il faut déjà vérifier dans les logs d’opensm que le subnet est bien UP car sans ça, point de IPoIB.

  45. Bonsoir, quel benchmark sous IOMETER Appliance, avez vous utilisé pour obtenir ces diagrammes ?

    Votre test est de très bonne qualité !

  46. Bonsoir Eric, pour obtenir les plus gros chiffres j’ai utilisé les profiles max iops et max throughput.
    Merci pour votre soutien !

  47. Dernière question, serait’il possible d’avoir une idée de la configuration hardware (modèle et type d’agrégat de SSD, type de carte RAID) ainsi que le type de conf. (ZFS, ZIL, …) utilisé derrière ce test ?

    Merci d’avance

  48. La tagret SRP était un HP N40L et le zpool était composé de 6 vdev composé d’un SSD intel chacun pour obtenir les meilleurs performances possible. Idem que pour ce post: http://www.hypervisor.fr/?p=4093

  49. AlexMercer Says:
    June 13th, 2014 at 13:18

    Hey, thanks for the great vibs ( the opensm for vmware and the iperf !!! ).

    Keep up the awesome work!

    I have a question tho. In my setup I am using your opensm, configured with partitions.conf : Default=0×7fff,ipoib,mtu=5:ALL=full;

    My vmware switch is set up with mtu=4 and the portgroup as well. The HCAs I am using are MT25418 and a HP 4x DDR IB switch ( all capable of transmiting mtu=4k). So the problem is that when I set up my mtu to 4k the speed between 2 esxi hosts gets really poor.
    Example :
    mtu=1500
    [ 4] local 192.168.13.39 port 5001 connected with 192.168.13.36 port 61140
    [ ID] Interval Transfer Bandwidth
    [ 4] 0.0-10.0 sec 3.98 GBytes 3.42 Gbits/sec
    mtu=2000
    [ 4] local 192.168.13.39 port 5001 connected with 192.168.13.36 port 61140
    [ ID] Interval Transfer Bandwidth
    [ 4] 0.0-10.0 sec 3.98 GBytes 3.42 Gbits/sec
    mtu=4092
    [ 3] local 192.168.13.36 port 50673 connected with 192.168.13.39 port 5001
    [ ID] Interval Transfer Bandwidth
    [ 3] 0.0-79.5 sec 8.00 GBytes 864 Mbits/sec

    Any ideas what might be causing this type of weird behaviour?
    Thanks in advance

  50. Hi Alex.
    It seems ESXi 5.5 doesn’t support 4k IPoIB so you should try 2044

  51. AlexMercer Says:
    June 16th, 2014 at 6:55

    I should have mentioned that I am running vmware 5.1 ESXi HP Custom image on HP C7000 with Proliants BL685 Gen1 Blades. It’s pretty much driving me crazy, because it was really hard to set up the mtu=4k and now it wont work the way it was meant to.

  52. I am looking at setting up a home lab with three ESXi 5.5 hosts, using vSAN for storage. I was planning on using Infiniband QDR cards with a QDR switch having a built-in subnet manager. Are there any challenges I might face using a switch having a built-in subnet manager?

    I have found this article detailing some of the config:
    http://www.bussink.ch/?p=1306

    I am considering a hardware config similar to this (without the external storage box):
    http://www.bussink.ch/?p=1123

    Dan

  53. Hi Dan, nope exept the noise (noisy fan) and the price :)
    Happy IB!

  54. Can anyone confirm that the original ConnectX (ie: Not CX-2 and/or CX-3 cards… simply “ConnectX”) cards will still function in ESXi 5.5 with the downgraded drivers and Nitro’s OpenSM vib?

  55. Hi Rain, with the latest 1.8.2.4 mellanox driver you don’t need to downgrade anymore. You will find it at http://vm.lc/ib

  56. Great article.

    I’ve ordered two QLOGIC 7240 infiniband cards – will they works the same way as with the cards you have used?

    Thank you!

  57. Hi, yes it should. Let me know if something’s wrong with the vib!

  58. Salut,

    L’un d’entre vous aurait-il testé la compatibilité sur ESXi 6.0 ?

    Merci

  59. Hi – Mega:

    Yes. I have it running on ESXi 6 – see screenshot:

    http://ge4.dk/public/infiniband.png

    / Jan

  60. Hi Jan,

    Thanks for your quick answer :)

Leave a Reply