На рис. 8.2 показано, как компоненты IP, TCP, iSCSI и SCSI работают вместе в процессе инкапсуляции. Пакет iSCSI содержит данные и команду SCSI для стека TCP/IP. Заголовок iSCSI содержит информацию об извлечении и интерпретации команды SCSI, которая размещена в пакете. Заголовок пакета TCP отвечает за гарантированную и последовательную доставку пакетов. Пакет TCP содержит данные и полезную нагрузку (payload) пакета IP. Заголовок IP используется в процессе маршрутизации.
Из трех основных протоколов работы с хранилищами IP – iSCSI, FCIP (Fibre Channel over IP) и iFCP (Internet Fibre Channel Protocol) – протокол iSCSI является единственным, не связанным с Fibre Channel. Как видите, на рис. 8.2 Fibre Channel не упоминается, поскольку протокол iSCSI разрабатывался без поддержки Fibre Channel.
Рис. 8.2. Инкапсуляция протокола iSCSI
Рис. 8.3. Уровни протокола iSCSI
Протокол iSCSI размещен поверх существующих уровней протоколов TCP, IP и низкоуровневых аппаратных протоколов, поддерживающих TCP/IP (например, Ethernet и Gigabit Ethernet).
Как можно заметить (рис. 8.3), SCSI – это протокол уровня приложения. Протокол iSCSI предоставляет услуги протоколу приложений SCSI и применяет TCP/IP для обеспечения гарантированной доставки, маршрутизации и т.д.
Все устройства iSCSI (целевые и устройства-инициаторы) имеют два разных имени.
и имеет формат «<имя домена>: <номер порта>:<имя iSCSI>«.
Поставщик_диска. Модель _диска. Номер».
Служба именования iSNS (Internet Storage Name Service) является общей для iSCSI, iFCP и FCP (Fibre Channel Protocol). Протоколы iFCP и FCP рассматриваются в разделе 8.1.5. Кроме использования iSNS в качестве службы именования, протокол iSCSI имеет спецификацию, в которой описана информационная база управления (Management Information Base – MIB) для управления устройствами iSCSI на основе протокола SNMP. Кроме того, протокол iSCSI определяет процесс реализации удаленной загрузки.
Протокол iSCSI устанавливает сеансы связи между инициатором и целевым устройством. Один или несколько сеансов протокола TCP могут использоваться одним или несколькими сеансами iSCSI. После установки сеанса две стороны (инициатор и целевое устройство) обмениваются такими параметрами, как безопасность, размер буфера и возможность отправки неза- прошенных данных. Сеанс iSCSI может закрываться стандартным образом: посредством завершения регистрации или в связи с возникновением ошибки. Независимо от количества использованных сессий TCP, протокол iSCSI гарантирует, что команда SCSI и ответы на нее будут доставлены в правильном порядке. Обратите внимание: протокол TCP гарантирует последовательную доставку для определенного сеанса TCP, но не обеспечивает синхронизации передаваемых данных между различными сеансами TCP. Таким образом, синхронизации сеансов TCP возлагается на протокол iSCSI. Можно перечислить ряд требований к протоколу iSCSI.
Разные команды SCSI
Все данные и параметры, соответствующие определенной команде, должны передаваться в рамках того же сеанса TCP, по которому передавалась команда SCSI.
В протоколе iSCSI определена концепция тега-инициатора. Все ответы будут иметь соответствующий тег инициатора, который высылается вместе с первоначальной командой. Инициатор должен обеспечить уникальность тегов и исключить возможность повторного использования тега, пока инициатор не получит все ответы на соответствующую команду. Тег должен быть уникальным в рамках инициатора (операционная. система \yindows NT является многозадачной, и инициатор может работать для нескольких процессов и приложений).
Протоколом iSCSI определена концепция нумерации команд, которая обеспечивает последовательную доставку команд через несколько сеансов TCP.
Кроме того, в протоколе iSCSI определен механизм CRC типа «точка- точка». Проверка CRC на втором уровне (например, на уровне Gigabit Ethernet) или на третьем уровне (контрольные суммы TCP/IP) может оказаться ненадежной, особенно если на пути передачи пакетов размещены другие устройства IP, например трансляторы сетевых адресов, маршрутизаторы и т.д. Поставщики подсистем хранения всегда с большой осторожностью относились к методам проверки целостности данных.
Протокол iSCSI имеет свои недостатки. При его использовании возникают проблемы, связанные с безопасностью, управлением сетевыми «заторами» и качеством обслуживания. Но эти вопросы в основном касаются работы сетей на базе протоколов TCP/IP, проблемы которых уже хорошо изучены.
Поддержка протокола iSCSI в Windows NT активно внедряется компанией Microsoft. Несмотря на это, Windows Server 2003 не обеспечена поддержкой iSCSI по умолчанию.
На рис. 8.4 показана архитектура реализации протокола iSCSI в Windows NT.
Инициатор iSCSI реализован в виде драйвера мини-порта для модели SCSIPort или Storport.