Требования к средствам тестирования и тестирования на соответствие ISCSI - ISCSI Conformance Testing and Testing Tool Requirement

Тестирование на соответствие iSCSI проводит тестирование, чтобы определить, соответствует ли инициатор / цель iSCSI стандарту iSCSI.

Протокол SCSI и iSCSI

Интерфейс малой компьютерной системы (SCSI ) - это семейство протоколов для связи с устройствами ввода-вывода, особенно с устройствами хранения. SCSI основан на модели клиент-сервер. Клиенты SCSI, называемые «инициаторами», выдают команды SCSI для запроса услуг у компонентов, логических единиц сервера, известного как «цель». «Транспорт SCSI» сопоставляет протокол SCSI клиент-сервер с определенным межсоединением. Инициатор - это одна конечная точка транспорта SCSI, а цель - другая конечная точка.

Интерфейс малой компьютерной системы Интернета (iSCSI ) протокол использует TCP / IP в качестве транспорта SCSI. Транспортируя пакеты SCSI через TCP / IP, iSCSI предоставляет функционально совместимое решение, которое может использовать преимущества существующей инфраструктуры Интернета, средств управления Интернетом и устранять ограничения расстояния. В отличие от традиционного Fibre Channel, для которого требуются специальные кабели, iSCSI может работать в существующей сетевой инфраструктуре. Он стал популярным протоколом сети хранения данных (SAN) из-за его масштабируемости и экономических преимуществ. Протокол определен в RFC 3720 и обновлено в RFC 5048.

Тестирование на соответствие iSCSI

С перемещением транспортного уровня SCSI от традиционной надежной шинной структуры к гораздо более ненадежной сети TCP / IP, в iSCSI была внесена довольно разумная сложность:

  • Необходимы процессы входа / выхода.
  • Во время входа в систему необходимо согласовать параметры безопасности / эксплуатации.
  • При входе в систему можно использовать CHAP или другой метод аутентификации.
  • Может потребоваться несколько сеансов / подключений.
  • Может быть реализован уровень восстановления множественных ошибок.
  • ...

Одним словом, хотя экономическая стоимость iSCSI может быть ниже, чем у других, сам протокол не так прост.

С момента утверждения протокола iSCSI неуклонно получает признание среди конечных пользователей и поставщиков хранилищ. В настоящее время на рынке существует большое количество реализаций инициатора / цели iSCSI, как коммерческих, так и бесплатных / с открытым исходным кодом. Эти реализации различаются по функциям и соответствию протоколу.

Тестирование на соответствие это тестирование, чтобы определить, соответствует ли система определенному стандарту. Это часто выполняется внешними организациями, иногда самим органом по стандартизации, чтобы обеспечить более высокие гарантии соблюдения. Продукты, протестированные таким образом, затем рекламируются как сертифицированные этой внешней организацией как соответствующие стандарту. Для протокола iSCSI (или других протоколов сетей и хранения данных) Лаборатория взаимодействия Университета Нью-Гэмпшира (UNH-IOL) - одна из ведущих нейтральных сторонних лабораторий, предлагающая наборы тестов для проверки соответствия iSCSI.

Как говорится во вводной части этих наборов тестов:

Эти тесты предназначены для определения того, соответствует ли продукт iSCSI спецификациям, определенным в IETF. RFC 3720 iSCSI (далее именуемый «Стандарт iSCSI»), а также обновления, содержащиеся в IETF RFC 5048 Исправления и пояснения iSCSI RFC (далее именуемые «Исправления и пояснения iSCSI»). Успешное завершение всех тестов, содержащихся в этом наборе, не гарантирует, что протестированное устройство будет успешно работать с другими продуктами iSCSI. Однако в сочетании с удовлетворительной работой испытательного стенда совместимости ИОЛ эти тесты дают разумный уровень уверенности в том, что тестируемое устройство (DUT) будет правильно работать во многих средах iSCSI.

Тестирование на соответствие iSCSI в основном включает следующие аспекты:

  • Соответствие фазы входа в систему
Тестовые пары ключ-значение для согласования; проверить различные флаги: CSG, NSG, бит C, бит T ...
  • Полнофункциональное соответствие фаз
Порядковые номера тестов (CmdSN, DataSN, R2TSN); тестовая команда / ответ SCSI, запрос / ответ функции управления задачами, текстовый запрос / ответ, NOP-In / NOP-Out, SNACK Request ...
  • Соответствие CHAP
Проверить поля CHAP: CHAP_A, CHAP_C, CHAP_I, CHAP_N, CHAP_R ...
  • Совместимость с несколькими соединениями
Протестируйте поддержку нескольких подключений при создании, завершении, согласовании параметров, порядковом номере и управлении задачами ...
  • Соответствие восстановления после ошибок
Поддержка восстановления ошибок инициатора тестирования / цели

Распространенные сценарии тестирования на соответствие iSCSI

В основном, можно предпринять два типа действий, чтобы проверить, соответствует ли DUT протоколу iSCSI:

  • Мы делаем правильные вещи и смотрим, правильно ли себя ведет тестируемое устройство.
    В этом случае основная задача - отправить правильную последовательность блоков PDU iSCSI в тестируемое устройство и проверить, может ли тестируемое устройство ответить правильными полями PDU / PDU.
  • Мы делаем неправильные вещи и смотрим, может ли тестируемое устройство обнаруживать и вести себя соответствующим образом.
    В этом случае мы должны до некоторой степени изменить последовательность PDU, отправляемую в DUT (например, изменить CmdSN команды, установить недопустимый дайджест данных ...), и убедиться, что DUT может реагировать в соответствии с протоколом (например, отправить a Отклонить PDU, закрыть соединение ...).

Некоторые распространенные сценарии можно найти при тестировании на соответствие iSCSI:

  • Функциональный тест iSCSI
Чтобы проверить, может ли задача iSCSI выполняться правильно (функция управления задачами, NOP-In / NOP-Out Ping, управление несколькими подключениями ...)
  • Ошибка формата PDU
Например, это ошибка, если биты W и F оба установлены в 0 в командном PDU SCSI.
  • Ошибка сеанса / этапа PDU
Например, это ошибка, если PDU команд SCSI появляется на этапе входа в систему или в сеансе обнаружения.
  • Ошибка заголовка / дайджеста данных
Ошибка дайджеста может привести к тому, что цель / инициатор отправит PDU Reject / SNACK.
  • Ошибка последовательности
CmdSN / StatSN / DataSN / R2T имеют разную область действия и разные правила.
  • Ошибка согласования
Текстовые параметры должны быть в формате ключ = значение с одним разделителем NULL («0x00»). У каждого текстового параметра также есть свой этап и правила согласования. Например, FirstBurstLength не должен превышать MaxBurstLength, SendTargets должны появляться только на этапе полной функциональности и т. Д.
  • Ошибка длины данных
Целевой объект отправляется слишком много или слишком мало данных.
  • Потерян PDU
Отбросьте входящий PDU, затем нажмите SNACK, отбросьте исходящий PDU и повторите попытку.

Большинство вышеперечисленных сценариев можно эмулировать путем изменения содержимого выходного PDU. Например, чтобы имитировать ошибку дайджеста данных, нам просто нужно изменить поле DataDigest в PDU.

Требование к инструменту тестирования на соответствие iSCSI

Инструмент проверки соответствия iSCSI можно рассматривать как эмулятор инициатора iSCSI (для проверки цели iSCSI) или эмулятора цели iSCSI (для проверки инициатора iSCSI). Хороший инструмент тестирования на соответствие iSCSI должен отвечать следующим требованиям:

  • Исполняемые тестовые скрипты
Для каждого тестового примера необходим исполняемый сценарий. Он должен быть написан в соответствии с описанием тестового примера, который определяет последовательность PDU и точки проверки.
  • Ядро iSCSI Engine
Ядро iSCSI Engine отвечает за отправку / получение блоков PDU iSCSI в / из DUT (тестируемое устройство). С одной стороны, он принимает входные данные от тестового сценария, отправляет PDU или проверяет контрольные точки; с другой стороны, он должен понимать протокол iSCSI на определенном уровне, чтобы можно было достичь необходимой автоматизации, например, автоматическое создание блоков PDU iSCSI (логин / текстовый запрос во время согласования, ответ Nop-Out ping) и некоторые поля PDU (ITT , TTT, CmdSN, данные, дайджест ...).
  • Проверка формата PDU
Для полученных PDU ядро ​​iSCSI Engine должно выполнить проверку для обнаружения искаженного PDU.
  • Возможность изменять содержимое PDU
Неправильные PDU часто отправляются в DUT для имитации ошибки формата PDU или ошибки дайджеста.
  • Возможность сбросить PDU
PDU может быть отброшен для имитации потери PDU во время передачи.
  • Возможность поддерживать несколько сеансов / подключений
Так же, как и при восстановлении после ошибок, поддержка нескольких сеансов / подключений является расширенной областью протокола iSCSI.
  • Результат и журнал
Пройден или не пройден тестовый пример должен иметь очевидную индикацию. Для анализа необходим подробный журнал. Было бы лучше иметь графический интерфейс для анализа файлов дампа PDU.
  • Пакетная система
Пакетная система необходима для управления тестовыми наборами и тестовыми примерами, чтобы большое количество тестовых сценариев могло запускаться автоматически без вмешательства пользователя.

Доступные инструменты тестирования на соответствие iSCSI

  • Служба тестирования UNH-IOL
    Консорциум iSCSI предоставляет услугу по тестированию продуктов и программного обеспечения iSCSI как с точки зрения совместимости, так и с точки зрения соответствия. Членство необходимо для новейшего испытательного оборудования и инструментов для тестирования ИОЛ.
  • iSCSISim
    Программное обеспечение с открытым исходным кодом. iSCSISim также является эмулятором инициатора iSCSI для тестирования целей iSCSI. Написанный на Python, его возможности включают внедрение команд SCSI, вставку ошибок и тестирование восстановления.
  • libiscsi
    Программное обеспечение с открытым исходным кодом. libiscsi - это библиотека пользовательского пространства, реализующая инициатор iSCSI. Написанный на C, он поставляется с набором тестов iSCSI / SCSI под названием iscsi-test-cu, который может проверить соответствие цели.
  • Набор тестов на соответствие протоколу iSCSI от Calsoft
    Коммерческое программное обеспечение. Набор тестов помогает обеспечить соответствие протокола iSCSI для любой целевой реализации iSCSI.

Смотрите также