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