Как заставить сервер записывать в область памяти клиентского устройства через RDMA

Как следует из названия, я пытаюсь отправить данные клиенту (через RDMA) вместо того, чтобы клиент отправлял их на сервер. Все примеры, которые я могу найти по этой теме, относятся к клиентскому серверу. Есть ли какие-либо ресурсы/ссылки, на которые я могу ссылаться?


person MaoMaoCake    schedule 26.03.2021    source источник
comment
Какой API вы используете для RDMA?   -  person haggai_e    schedule 29.03.2021
comment
@haggai_e Я использовал необработанный RDMA, я нашел rsocket от Intel, и это было действительно хорошо   -  person MaoMaoCake    schedule 30.03.2021


Ответы (1)


При использовании библиотеки libibverbs для глаголов RDMA в большинстве случаев нет понятия клиента и сервера. Один устанавливает соединение между двумя парами очередей, используя внеполосный канал (TCP или RDMA CM), а затем конфигурирует QP с информацией о соединении, которая была обменена. После установления соединения обе стороны могут использовать одностороннюю операцию RDMA, если это позволяет конфигурация QP.

Примером такого приложения является perftest, которое обменивается информацией о соединении с TCP (или RDMA CM) и затем измеряет производительность односторонних и двусторонних операций RDMA.

В librdmacm и rsockets существует концепция сервера (идентификатора прослушивания или сокета) и клиента. Тем не менее, после установления соединения обе стороны могут использовать RDMA. Вы можете найти примеры для обоих в репозитории rdma-core. Например, rping использует RDMA CM и вызывает операции чтения и записи RDMA с сервера на клиент и riostream использует rsockets и вызывает записи RDMA как с клиента, так и с сервера.

person haggai_e    schedule 18.04.2021