¿Cómo obtener la interfaz virtualizada SR-IOV Infiniband UP?

9

He pasado varios días en esto ahora y he logrado que SR-IOV funcione con la tarjeta Mellanox Infiniband utilizando el último firmware.

Las funciones virtuales aparecen en Dom0 como

06: 00.1 Controlador de red: familia Mellanox Technologies MT27500 [Función virtual ConnectX-3] 06: 00.2 Controlador de red: Familia Mellanox Technologies MT27500 [Función virtual ConnectX-3] 06: 00.3 Controlador de red: Familia Mellanox Technologies MT27500 [Función virtual ConnectX-3 ] 06: 00.4 Controlador de red: familia Mellanox Technologies MT27500 [Función virtual ConnectX-3]

Luego separé 06: 00.1 de Dom0 y lo asigné a xen-pciback.

He pasado esto a un dominio de prueba Xen.

lspci dentro de la prueba muestra que DomU:

00: 01.1 Controlador de red: Mellanox Technologies MT27500 Family [Función virtual ConnectX-3]

Tengo los siguientes módulos cargados en DomU

mlx4_ib
rdma_ucm
ib_umad
ib_uverbs
ib_ipoib

La salida dmesg para controladores mlx4 muestra:

[   11.956787] mlx4_core: Mellanox ConnectX core driver v1.1 (Dec, 2011)
[   11.956789] mlx4_core: Initializing 0000:00:01.1
[   11.956859] mlx4_core 0000:00:01.1: enabling device (0000 -> 0002)
[   11.957242] mlx4_core 0000:00:01.1: Xen PCI mapped GSI0 to IRQ30
[   11.957581] mlx4_core 0000:00:01.1: Detected virtual function - running in slave mode
[   11.957606] mlx4_core 0000:00:01.1: Sending reset
[   11.957699] mlx4_core 0000:00:01.1: Sending vhcr0
[   11.976090] mlx4_core 0000:00:01.1: HCA minimum page size:512
[   11.976672] mlx4_core 0000:00:01.1: Timestamping is not supported in slave mode.
[   12.068079] <mlx4_ib> mlx4_ib_add: mlx4_ib: Mellanox ConnectX InfiniBand driver v1.0 (April 4, 2008)
[   12.184072] mlx4_core 0000:00:01.1: mlx4_ib: multi-function enabled
[   12.184075] mlx4_core 0000:00:01.1: mlx4_ib: operating in qp1 tunnel mode

Incluso tengo el dispositivo ib0 apareciendo.

ib0       Link encap:UNSPEC  HWaddr 80-00-05-49-FE-80-00-00-00-00-00-00-00-00-00-00  
          inet addr:10.10.10.10  Bcast:10.10.10.255  Mask:255.255.255.0
          UP BROADCAST MULTICAST  MTU:2044  Metric:1
          RX packets:117303 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:256 
          RX bytes:6576132 (6.5 MB)  TX bytes:0 (0.0 B)

Incluso puedo hacer ping localmente 10.10.10.10.

Sin embargo, esos pings no se envían en la tela infiniband.

Parece ser porque el enlace está inactivo. ibstat muestra:

CA 'mlx4_0'
    CA type: MT4100
    Number of ports: 1
    Firmware version: 2.30.3000
    Hardware version: 0
    Node GUID: 0x001405005ef41f25
    System image GUID: 0x002590ffff175727
    Port 1:
        State: Down
        Physical state: LinkUp
        Rate: 10
        Base lid: 9
        LMC: 0
        SM lid: 1
        Capability mask: 0x02514868
        Port GUID: 0x0000000000000000

¿Cómo lo consigo UP? el enlace domU está ARRIBA pero no el VF?


Y la respuesta se encuentra realmente aquí: según este enlace: http://www.spinics.net/lists/linux-rdma/msg13307.html

¿Qué necesito para que el puerto del VF esclavo se active? Estoy ejecutando opensm 3.3.13 en una caja diferente, ¿es eso lo suficientemente nuevo? (¿SR-IOV requiere algún soporte SM?)

Sí, como señaló Hal, como mínimo necesita opensm 3.3.14 ( http://marc.info/?l=linux-rdma&m=133819320432335&w=2 ), ya que es la primera versión que admite alias-guid y otros elementos necesarios para SRIOV, 3.3.15 también está disponible ahora, por lo que desea la segunda versión que lo admita ... básicamente necesita un enlace IB para el PPF y el esclavo para obtener un alias guid registrado para él en el SM. Nosotros (el equipo de IL) estábamos fuera los martes / miércoles de vacaciones, trataremos de obtener más detalles esta noche y si no, mañana, seguro.

Ahora he actualizado OpenSM e informaré pronto.


EDITAR: OK, ahora está funcionando. Sin embargo, estoy obteniendo una explosión de registro para opensm. El proceso OpenSM está escribiendo cientos de entradas por segundo del formulario:

Sep 30 20:36:26 707784 [7DC1700] 0x01 -> validate_requested_mgid: ERR 1B01: Wrong MGID Prefix 0x8000 must be 0xFF
Sep 30 20:36:26 707810 [7DC1700] 0x01 -> mcmr_rcv_create_new_mgrp: ERR 1B22: Invalid requested MGID
Sep 30 20:36:26 708096 [8DC3700] 0x01 -> validate_requested_mgid: ERR 1B01: Wrong MGID Prefix 0x8000 must be 0xFF
Sep 30 20:36:26 708119 [8DC3700] 0x01 -> mcmr_rcv_create_new_mgrp: ERR 1B22: Invalid requested MGID
Sep 30 20:36:26 708391 [FF5B0700] 0x01 -> validate_requested_mgid: ERR 1B01: Wrong MGID Prefix 0x8000 must be 0xFF
Sep 30 20:36:26 708421 [FF5B0700] 0x01 -> mcmr_rcv_create_new_mgrp: ERR 1B22: Invalid requested MGID
Sep 30 20:36:26 708696 [3DB9700] 0x01 -> validate_requested_mgid: ERR 1B01: Wrong MGID Prefix 0x8000 must be 0xFF
Sep 30 20:36:26 708719 [3DB9700] 0x01 -> mcmr_rcv_create_new_mgrp: ERR 1B22: Invalid requested MGID

Y los mensajes de error anteriores desaparecieron cuando reinicié y le di a Dom0 más memoria. Actualmente tengo 2 GB asignados con la desactivación automática. Desafortunadamente, están de vuelta sin una razón obvia. Entonces hice una nueva pregunta que se relaciona con eso aquí

No estoy realmente seguro de por qué funciona en dom0, pero en mi caso tengo que tener OpenSM ejecutándose en Dom0, que tiene los VF. Supongo que esto se debe a que la instancia de OpenSM que se ejecuta en Dom0 conoce los VF y puede anunciarlos mientras que un administrador de subred en otro nodo no. Esa es mi suposición. Espero que el otro nodo xen recoja también sus VF. Eso puede terminar convirtiéndose en otra pregunta. Por ahora está trabajando con un solo nodo Xen.

Mate
fuente
¿Qué muestra "sminfo"?
Danila Ladner
En Dom0. sminfo: sm lid 1 sm guid 0x2590ffff1758d1, cuenta de actividad 40515 prioridad 0 estado 3 SMINFO_MASTER
Matt
Ok, reiniciar y darle a Dom0 más memoria (2 GB) parece haber hecho que esos errores desaparezcan. No estoy seguro de si fue más memoria o reinicio lo que parece haberlo resuelto.
Matt
¡Muchas gracias! esto me salvó! Tenía un SM ejecutándose en el conmutador, pero esto no fue suficiente. ¡Después de que comencé el SM en uno de los nodos (después de hacer toda la magia del sistema) ahora tengo IB en las máquinas virtuales!
Jounathaen
1
@jounathaen: me alegra que alguien lo haya encontrado útil. Pensé en ese momento que estaba abriendo nuevos caminos. Ir a donde ninguno había ido antes.
Matt

Respuestas:

1

OpenSM debe instalarse e iniciarse en el host del hipervisor para que aparezca el estado. Luego comience a abrir OpenSM con la opción: PUERTOS = "TODOS".

Danila Ladner
fuente
1
OpenSM ya se está ejecutando en otro host en la estructura.
Matt
Se agregó más información al final de su pregunta original
Matt
En la configuración sin interruptor, OpenSM debe ejecutarse en ambos hosts.
Danila Ladner
Hay dos interruptores. Aunque no creo que se gestionen
Matt
1
¿Por qué puerto GUID: 0x0000000000000000 ??? Solo lo vi. No se supone que sea 0.
Danila Ladner