Расширения iSCSI для RDMA (iSER ) - это компьютер сетевой протокол, который расширяет протокол Internet Small Computer System Interface (iSCSI ) для использования удаленного прямого доступа к памяти (RDMA ). RDMA обеспечивается либо протоколом управления передачей (TCP) со службами RDMA (iWARP ), который использует существующую настройку Ethernet и, следовательно, не требует больших инвестиций в оборудование, RoCE (RDMA over Converged Ethernet ), который не требует уровня TCP и, следовательно, обеспечивает меньшую задержку, или InfiniBand. Он позволяет передавать данные непосредственно в буферы памяти компьютера SCSI и из них (которые соединяют компьютеры с устройствами хранения) без промежуточных копий данных и без значительного вмешательства CPU.
Консорциум RDMA было объявлено 31 мая 2002 г. с целью реализации продукта к 2003 г. Консорциум опубликовал свое предложение в июле 2003 г. Спецификации протокола были опубликованы в виде проектов в сентябре 2004 г. в Internet Engineering Task Force и выпущены как RFC в октябре 2007 года. OpenIB Alliance был переименован в 2007 году в OpenFabrics Alliance, а затем выпустил программный пакет с открытым исходным кодом.
Мотивом для iSER является использование RDMA, чтобы избежать ненужного копирования данных на цели и инициаторе. Архитектура Datamover Architecture (DA) определяет абстрактную модель, в которой перемещение данных между конечными узлами iSCSI логически отделено от остальной части протокола iSCSI; iSER - это один протокол Datamover. Интерфейс между iSCSI и протоколом Datamover, в данном случае iSER, называется Datamover Interface (DI).
Основное различие между стандартным iSCSI и iSCSI по сравнению с iSER заключается в выполнении команд чтения / записи SCSI. С iSER целевой объект управляет всей передачей данных (за исключением незапрошенных данных iSCSI), выполняя операции записи / чтения RDMA соответственно. Когда уровень iSCSI выдает командный PDU iSCSI, он вызывает примитив Send_Control, который является частью DI. Примитив Send_Control отправляет STag с PDU. Уровень iSER на целевой стороне уведомляет цель о том, что PDU был получен с примитивом Control_Notify (который является частью DI). Цель вызывает примитивы Put_Data или Get_Data (которые являются частью DI) для выполнения операции записи / чтения RDMA соответственно. Затем цель вызывает примитив Send_Control, чтобы отправить ответ инициатору. Пример показан на рисунках (время идет сверху вниз).
Все PDU управляющего типа iSCSI содержат заголовок iSER, который позволяет инициатору объявлять STag, сгенерированные во время регистрации буфера. Цель будет использовать STag позже для операций чтения / записи RDMA.