# InfiniBand

InfiniBand (IB) é um padrão de comunicação de rede de computadores usado em computação de alto desempenho que apresenta rendimento muito alto e latência muito baixa. É usado para interconexão de dados entre e dentro de computadores. InfiniBand também é usado como uma interconexão direta ou comutada entre servidores e sistemas de armazenamento, bem como uma interconexão entre sistemas de armazenamento. Ele é projetado para ser escalável e usa uma topologia de rede de malha comutada. Entre 2014 e junho de 2016, foi a interconexão mais comumente usada na lista TOP500 de supercomputadores.
A Mellanox (adquirida pela Nvidia) fabrica adaptadores de barramento de host InfiniBand e switches de rede, que são usados ​​por grandes fornecedores de sistemas de computador e bancos de dados em suas linhas.
Como uma interconexão de cluster de computadores, o IB compete com Ethernet, Fibre Channel e Intel Omni-Path. A tecnologia é promovida pela InfiniBand Trade Association.

## História

O InfiniBand surgiu em 1999 da fusão de dois projetos concorrentes: Future I/O e Next Generation I/O (NGIO). O NGIO foi liderado pela Intel, com uma especificação lançada em 1998, e acompanhado pela Sun Microsystems e Dell. O Future I/O foi apoiado pela Compaq, IBM e Hewlett-Packard. Isso levou à formação da InfiniBand Trade Association (IBTA), que incluía ambos os conjuntos de fornecedores de hardware, bem como fornecedores de software, como a Microsoft. Na época, pensava-se que alguns dos computadores mais poderosos estavam se aproximando do gargalo de interconexão do barramento PCI, apesar de atualizações como PCI-X. A versão 1.0 da especificação de arquitetura InfiniBand foi lançada em 2000. Inicialmente, a visão do IBTA para o IB era simultaneamente uma substituição para PCI em I/O, Ethernet na sala de máquinas, interconexão de cluster e Fibre Channel. O IBTA também previu a decomposição de hardware de servidor em uma estrutura IB.
A Mellanox foi fundada em 1999 para desenvolver a tecnologia NGIO, mas em 2001 lançou uma linha de produtos InfiniBand chamada InfiniBridge com velocidades de 10 Gbit/segundo. Após o estouro da bolha das pontocom, houve hesitação na indústria em investir em um salto tecnológico de tão longo alcance. Em 2002, a Intel anunciou que, em vez de lançar circuitos integrados IB ("chips"), ela se concentraria no desenvolvimento de PCI Express, e a Microsoft descontinuou o desenvolvimento do IB em favor da extensão do Ethernet. A Sun Microsystems e a Hitachi continuaram a dar suporte ao IB.
Em 2003, o supercomputador System X construído na Virginia Tech usou InfiniBand no que foi estimado ser o terceiro maior computador do mundo na época. A OpenIB Alliance (mais tarde renomeada OpenFabrics Alliance) foi fundada em 2004 para desenvolver um conjunto aberto de software para o kernel Linux. Em fevereiro de 2005, o suporte foi aceito no kernel Linux 2.6.11. Em novembro de 2005, dispositivos de armazenamento finalmente foram lançados usando InfiniBand de fornecedores como a Engenio. A Cisco, desejando manter a tecnologia superior à Ethernet fora do mercado, adotou uma estratégia de "comprar para matar". A Cisco matou com sucesso empresas de comutação InfiniBand, como a Topspin, por meio de aquisição.
Dos 500 maiores supercomputadores em 2009, Gigabit Ethernet foi a tecnologia de interconexão interna em 259 instalações, em comparação com 181 usando InfiniBand. Em 2010, os líderes de mercado Mellanox e Voltaire se fundiram, deixando apenas um outro fornecedor de IB, QLogic, principalmente um fornecedor de Fibre Channel. Na Conferência Internacional de Supercomputação de 2011, links rodando a cerca de 56 gigabits por segundo (conhecidos como FDR, veja abaixo), foram anunciados e demonstrados conectando estandes na feira. Em 2012, a Intel adquiriu a tecnologia InfiniBand da QLogic, deixando apenas um fornecedor independente.
Em 2014, o InfiniBand era a tecnologia de conexão interna mais popular para supercomputadores, embora em dois anos, o 10 Gigabit Ethernet começou a substituí-lo.
Em 2016, foi relatado que a Oracle Corporation (um investidor da Mellanox) poderia projetar seu próprio hardware InfiniBand.
Em 2019, a Nvidia adquiriu a Mellanox, o último fornecedor independente de produtos InfiniBand.

## Especificação

As especificações são publicadas pela associação comercial InfiniBand.

### Desempenho

Os nomes originais para velocidades eram taxa de dados única (SDR), taxa de dados dupla (DDR) e taxa de dados quádrupla (QDR), conforme indicado abaixo. Posteriormente, outras siglas de três letras foram adicionadas para taxas de dados ainda maiores.
Taxas de dados unidirecionais InfiniBand :
| | Ano | Código de linha | Código de linha | Taxa de sinalização (Gbit/s) | Throughput (Gbit/s) | Throughput (Gbit/s) | Throughput (Gbit/s) | Throughput (Gbit/s) | Latência do adaptador (μs) |
| | Ano | Código de linha | Código de linha | Taxa de sinalização (Gbit/s) | 1x | 4x | 8x | 12x | Latência do adaptador (μs) |
| SDR | 2001, 2003 | NRZ | 8b/10b | 2.5 | 2 | 8 | 16 | 24 | 5 |
| DDR | 2005 | NRZ | 8b/10b | 5 | 4 | 16 | 32 | 48 | 2.5 |
| QDR | 2007 | NRZ | 8b/10b | 10 | 8 | 32 | 64 | 96 | 1.3 |
| FDR10 | 2011 | NRZ | 64b/66b | 10.3125 | 10 | 40 | 80 | 120 | 0.7 |
| FDR | 2011 | NRZ | 64b/66b | 14.0625 | 13.64 | 54.54 | 109.08 | 163.64 | 0.7 |
| EDR | 2014 | NRZ | 64b/66b | 25.78125 | 25 | 100 | 200 | 300 | 0.5 |
| HDR | 2018 | PAM4 | 64b/66b | 53.125 | 50 | 200 | 400 | 600 | <0.6 |
| NDR | 2022 | PAM4 | 256b/257b | 106.25 | 100 | 400 | 800 | 1200 | ? |
| XDR | 2024 | TBA | TBA | 200 | 200 | 800 | 1600 | 2400 | TBA |
| GDR | TBA | TBA | TBA | 400 | 400 | 1600 | 3200 | 4800 | TBA |

#### Notss

* ↑ Usando correção de erros de avanço Reed-Solomon
Cada link é duplex. Os links podem ser agregados: a maioria dos sistemas usa um conector de 4 links/pistas (QSFP). O HDR geralmente usa links 2x (também conhecido como HDR100, link de 100 Gb usando 2 pistas de HDR, enquanto ainda usa um conector QSFP). 8x é necessário com portas de switch NDR usando conectores OSFP (Octal Small Form Factor Pluggable).
O InfiniBand fornece recursos de acesso direto à memória remota (RDMA) para baixa sobrecarga de CPU.

### Topologia

O InfiniBand usa uma topologia de malha comutada, em oposição ao antigo meio compartilhado Ethernet. Todas as transmissões começam ou terminam em um adaptador de canal. Cada processador contém um adaptador de canal host (HCA) e cada periférico tem um adaptador de canal de destino (TCA). Esses adaptadores também podem trocar informações para segurança ou qualidade de serviço (QoS).

### Mensagens

O InfiniBand transmite dados em pacotes de até 4 KB que são reunidos para formar uma mensagem. Uma mensagem pode ser:
* um acesso remoto direto à memória, leitura ou gravação
* um canal de envio ou recebimento
* uma operação baseada em transações (que pode ser revertida)
* uma transmissão multicast
* uma operação atômica

### Interconexão física

Além de uma conexão de fator de forma de placa, ele pode usar cobre ativo e passivo (até 10 metros) e cabo de fibra óptica (até 10 km). Conectores QSFP são usados.
A InfiniBand Association também especificou o sistema de conectores CXP para velocidades de até 120 Gbit/s em cabos ópticos ativos de cobre e transceptores ópticos usando cabos de fibra multimodo paralelos com conectores MPO de 24 fibras.$^[$

### Interfaces de software

O suporte ao sistema operacional Mellanox está disponível para Solaris, FreeBSD, Red Hat Enterprise Linux, SUSE Linux Enterprise Server (SLES), Windows, HP-UX, VMware ESX, e AIX.
O InfiniBand não tem uma interface de programação de aplicativo (API) padrão específica. O padrão lista apenas um conjunto de verbos como ibv_open_device ou ibv_post_send, que são representações abstratas de funções ou métodos que devem existir. A sintaxe dessas funções é deixada para os fornecedores. Às vezes, para referência, isso é chamado de API de verbos. O software padrão de facto é desenvolvido pela OpenFabrics Alliance e chamado de Open Fabrics Enterprise Distribution (OFED). Ele é lançado sob duas licenças GPL2 ou licença BSD para Linux e FreeBSD, e como Mellanox OFED para Windows (nomes de produtos: WinOF/WinOF-2; atribuído como driver de controlador de host para corresponder a dispositivos ConnectX 3 a 5 específicos) sob uma escolha de licença BSD para Windows. Ele foi adotado pela maioria dos fornecedores do InfiniBand, para Linux, FreeBSD e Microsoft Windows. A IBM se refere a uma biblioteca de software chamada libibverbs, para seu sistema operacional AIX, bem como "verbos AIX InfiniBand". O suporte ao kernel Linux foi integrado em 2005 na versão 2.6.11 do kernel.

### Ethernet sobre InfiniBand

Ethernet sobre InfiniBand, abreviado para EoIB, é uma implementação Ethernet sobre o protocolo InfiniBand e tecnologia de conector. EoIB permite múltiplas larguras de banda Ethernet variando na versão InfiniBand (IB). A implementação Ethernet do Internet Protocol Suite, geralmente referido como TCP/IP, é diferente em alguns detalhes em comparação com o protocolo InfiniBand direto em IP sobre IB (IPoIB).