---
# System prepended metadata

title: InfiniBand 介紹
tags: [IB]

---

# InfiniBand 介紹

InfiniBand 是用於高效能計算的網路通訊標準，並且支援 **RDMA** (Remote Direct Memory Access) 技術，具有極高的頻寬與極低的延遲，用於高速資料傳輸。可以透過鏈路聚合提升 throughput。

![IB cable](https://www.nvidia.com/content/dam/en-zz/Solutions/networking/infiniband/infiniband-dac-2c50-d.jpg)

![ConnectX-7](https://www.nvidia.com/content/nvidiaGDC/tw/zh_TW/networking/infiniband-adapters/_jcr_content/root/responsivegrid/nv_container/nv_container_copy_co/nv_image.coreimg.100.630.png/1718642493676/connectx-7-2c50-d-2x.png)

![image](https://hackmd.io/_uploads/BJXklMWpJe.png)

- FDR-10 4X -> 40 Gbps

## InfiniBand 架構

Application layer 以下都是靠 hardware 完成。

![IB protocol stack](https://hackmd.io/_uploads/HyFcx4Zpke.png)

[source](https://www.fs.com/blog/infiniband-what-exactly-is-it-7714.html)

InfiniBand 有兩種 Channel Adapter:

- HCA (Host Channel Adapter)
  - 作為主機與 InfiniBand 網路間的橋梁，負責收發資料。支援 RDMA，可以直接跳過作業系統存取另一台機器的記憶體。
- TCA (Target Channel Adapter)
  - 通常在儲存設備或 I/O 裝置上，接收及處理從 HCA 發來的資料。

![image](https://hackmd.io/_uploads/H15UFEWTke.png)

## Subnet Manager

負責管理和配置 InfiniBand 的 subnet

- 探索 InfiniBand 的網路拓樸
- 搜尋連接的裝置
- 流量控制

## RDMA

RDMA 可以讓一台 server 上的應用程式直接讀寫另一台 server 的記憶體，大幅提升資料傳輸的速度。

![image](https://hackmd.io/_uploads/HkerYrWTke.png)

### Zero-copy

這項技術的目標是消除中間 copy 的步驟，在不靠 CPU 參與、不用多次搬移就能把資料直接傳到目標設備的記憶體。

## Verbs API

Verbs 是由 InfiniBand 描述的抽象定義，用於操作 RDMA 的功能，沒有規定如何實作，需要硬體廠商自己開發相關驅動跟 library。

## OFED

OFED (OpenFabrics Enterprise Distribution) 包含很多開源軟體，主要用於支援 RDMA，各家廠商也會有定製版的 OFED，例如 Mellanox 的 MLNX_OFED。

## IPoIB

把 IB 當成 Ethernet，讓他能支援 IP 協議。

## 參考連結

- https://hackmd.io/@William-Mou/SywOmi7kD
- https://hpc.phy.ntnu.edu.tw/download/1-6_HPC%E7%B6%B2%E8%B7%AF.pdf
- https://hpc.phy.ntnu.edu.tw/
- https://www.ctimes.com.tw/DispArt/tw/PCI/%E4%B9%99%E5%A4%AA/%E5%85%89%E7%BA%96%E7%B6%B2%E8%B7%AF/%E7%84%A1%E7%B7%9A%E9%80%9A%E8%A8%8A%E6%94%B6%E7%99%BC%E5%99%A8/0211051137VT.shtml
- https://zhuanlan.zhihu.com/p/329198771