MSN (порядковый номер сообщения) в ответ на повторную передачу RDMA Read

При выполнении теста ib_read_bw для сообщений размером 64 КБ от Mellanox CX-4 (инициатор запроса) к другому RNIC происходят повторные передачи от Mellanox для 5-го RDMA-READ и далее для 50 КБ данных (первые 12 КБ были успешно подтверждены), после чего он непрерывно повторно передает один и тот же запрос на оставшиеся 50 КБ данных, хотя целевой RNIC отвечает.

Одно наблюдение: целевой RNIC отвечает MSN 11 вместо 5 в первом ответе RDMA READ для повторно переданного (для 50 КБ) запроса на чтение.

Спецификация infiniband говорит, что для дублирующих запросов RNIC не должен увеличивать MSN, означает ли это, что RNIC должен отвечать любым MSN, который у него есть (он мог отвечать на все полученные входящие запросы и иметь MSN 16, а затем повторно передача видна) или он должен ответить правильным MSN для повторной передачи RDMA READ.


person Anji M    schedule 19.02.2020    source источник


Ответы (2)


Спецификация InfiniBand говорит, что:

Для запросов RDMA READ ответчик может увеличить свой MSN после завершения проверки запроса и до того, как он начал передачу любых запрошенных данных, и может вернуть увеличенный MSN в AETH первого ответного пакета.

а также

MSN не должен увеличиваться для повторяющихся запросов.

(C9-148)

Я считаю, что это означает, что MSN должен оставаться неизменным при повторной передаче.

person haggai_e    schedule 19.02.2020
comment
Спасибо за комментарий. Мое понимание тоже такое. Но вопрос в том, какой MSN ответчик должен включить в ответы на повторно переданный пакет? Например, в моем случае это 5-й пакет, который повторно передается, поэтому должен ли он иметь 5 в качестве MSN или он должен иметь последний MSN, который у него есть (может быть, некоторые другие пакеты (RDMA SEND/WRITEs) могли получить ACK перед повторными передачами)? Спецификация говорит, что MSN не следует изменять, но не ясно, что должен иметь дублирующийся ответ? - person Anji M; 20.02.2020
comment
Насколько я понимаю он должен быть последним, но согласен не понятно. - person haggai_e; 20.02.2020

Да, насколько я понимаю, MSN должен указывать на исходный запрос на чтение. В случае ответа на дубликат SEND или WRITE, PSN и MSN относятся к последнему отправленному ACK. Это работает как объединенный ACK.
Но при ответе на запрос чтения PSN относится к исходному запросу чтения, и, следовательно, MSN также должен относиться к исходному запросу чтения.

Из спецификации - «чтобы считаться дубликатом запроса RDMA READ, PSN дубликата запроса должен находиться в пределах текущего дублированного региона PSN ответчика. Кроме того, чтобы считаться действительным дубликатом запроса RDMA READ, PSN дубликата запроса должен находиться в диапазон номеров PSN, выделенных для исходного ответа RDMA READ, и объем данных, запрошенных в дублирующем запросе, должны полностью содержаться в объеме данных, запрошенных в исходном запросе RDMA READ. Другими словами, данные, запрошенные в дублирующем запросе RDMA Запрос READ должен быть надлежащим подмножеством данных, запрошенных в исходном запросе RDMA READ. Если начальный PSN и длина дублированного запроса RDMA READ не попадают в диапазон номеров PSN, выделенных для исходного ответа RDMA READ, запрос недействителен. и ответчик может молча удалить дубликат RDMA READ Request "

person Rohit Gupta    schedule 27.02.2020