Я выяснил и подтвердил с поставщиками Infiniband, хотя в документе объясняется, что транспортный уровень построен на аппаратном уровне, он относится только к парам очередей в HCA. Соответственно, большая часть логики работает в фоновом режиме из драйвера Infiniband.
Общий процесс
1) Приложение написано для использования InfiniBand.
2) Интерфейсы в драйвере Mellanox (например, MPI) позволяют приложению через драйвер записывать данные непосредственно в пространство памяти (отправляя рабочий запрос) на сервере (теперь мы находимся на транспортном уровне).
3) Детали пространства памяти между исходным и целевым серверами обмениваются, так что теперь обмен данными будет происходить между этими областями памяти RAM. Это является ключевым преимуществом InfiniBand, потому что он обходит ядро / ЦП и обменивается данными на аппаратном уровне (между областями памяти, используя пары очередей между HCA (адаптерами). Когда мы говорим, что данные обмениваются на аппаратном уровне, мы говорим о памяти сервера и HCA.
4) HCA будет сегментировать пакеты в соответствии с MTU и передавать данные на провод. На другом конце он будет снова собран. Это все еще "Транспортный уровень".
5) Когда биты проталкиваются на провод - это физический уровень.
Заключение
Драйвер находится в фоновом режиме, сообщая ОС, как взаимодействовать с HCA (выбор транспортного протокола InfiniBand vs, Ethernet, MTU, CM vs, режима обмена пар очереди RD и т. Д.). Кроме того, он предоставляет программные интерфейсы InfiniBand и дополнительные утилиты для устранения неполадок и т. Д. Я думаю, вы могли бы сказать, что здесь есть некоторая логика, предоставляемая драйвером OFED HCA.