Instalei o pacote xen-hypervisor-4.1 em um servidor Ubuntu 12.04.3.
Ele tem um adaptador infiniband instalado e executo o IPoIB com ele.
O que quero fazer é fornecer o ipoib para um ou mais convidados. No entanto, usar o linux bridge não é possível.
# brctl addbr br0
# brctl addif br0 ib0
can't add ib0 to bridge br0: Invalid argument
E isso ocorre porque ib0 não é uma interface Ethernet verdadeira. Já tenho o ipoib implantado na rede, então o eoib pode não ser uma opção compatível?
Além disso, se eu simplesmente passasse pelo adaptador Infiniband, isso funcionaria apenas para um único convidado.
Como disponibilizo a rede infiniband para determinadas máquinas virtuais?
Responder1
IPoIB não funciona para ponte L2, pois é encapsulamento L3 sobre IB. Você pode usar o eIPoIB da Mellanox: *http://www.mellanox.com/page/products_dyn?product_family=26&mtag=linux_sw_drivers
É um novo recurso na versão 2.0-2.0.51 conforme especificado nas Notas de Lançamento. Mais detalhes sobre eIPoIB aqui: *https://www.openfabrics.org/ofa-documents/doc_download/510-ethernet-tunneling-over-ipoib.html
Responder2
Para responder à minha própria pergunta - mais uma vez.
A melhor alternativa além do roteamento via Dom0 é usar SR-IOV. Basicamente, isso cria uma série de cartões virtuais (na verdade, funções virtuais) que você passa para um convidado. O convidado deve carregar um driver adequado. No entanto, do ponto de vista do hóspede, ele pensa que está usando o cartão nativamente, como se tivesse tudo só para ele.
O SR-IOV oferece o melhor desempenho neste cenário.
Fazer isso funcionar requer um kernel recente (estou usando 3.11.4) e uma versão do gerenciador de sub-rede com suporte a alias GUID, ou seja, versão opensm >= 3.3.14