Ответ 1
Адаптеры InfiniBand ( "HCAs" ) предоставляют несколько дополнительных функций, которые могут быть использованы через собственный интерфейс программирования "глаголов":
- Передача данных может быть инициирована непосредственно из пользовательского пространства на аппаратное обеспечение, минуя ядро и избегая накладных расходов на системный вызов.
- Адаптер может обрабатывать весь сетевой протокол для взлома большого количества сообщений (даже много мегабайт) в пакеты, генерации/обработки ACK, повторной передачи потерянных пакетов и т.д. без использования какого-либо процессора на отправителе или получателе.
IPoIB (IP-over-InfiniBand) - это протокол, который определяет, как отправлять IP-пакеты через IB; и, например, Linux имеет драйвер "ib_ipoib", который реализует этот протокол. Этот драйвер создает сетевой интерфейс для каждого порта InfiniBand в системе, что делает HCA как обычную сетевую карту.
IPoIB не в полной мере использует возможности HCA; сетевой трафик проходит через обычный стек IP, что означает, что для каждого сообщения требуется системный вызов, а главный процессор должен обрабатывать взлома данных в пакеты и т.д. Однако это означает, что приложения, использующие обычные IP-сокеты, будут работать поверх (хотя процессор, вероятно, не сможет запустить IP-стек достаточно быстро, чтобы использовать канал IBDR 32 Гбит/с).
Так как IPoIB обеспечивает обычный интерфейс сетевого интерфейса NIC, на нем можно запускать сокеты TCP (или UDP). Пропускная способность TCP более 10 Гбит/с возможна с использованием последних систем, но это сгорит с достаточным количеством процессоров. На ваш вопрос нет никакой разницы между IPoIB и TCP с InfiniBand - они оба ссылаются на использование стандартного IP-стека поверх оборудования IB.
Реальное различие заключается в использовании IPoIB с обычным сокетным приложением по сравнению с использованием встроенного InfiniBand с приложением, которое было закодировано непосредственно в интерфейсе интерфейсов IB-глаголов. Натуральное приложение почти наверняка получит гораздо более высокую пропускную способность и более низкую задержку, в то же время тратит меньше ресурсов на сетевое взаимодействие.